MVC4使用嵌套的@ Html.RenderPartial()抛出编译器错误消息:CS1502

Kir*_*ran 7 razor asp.net-mvc-4 razorgenerator

我正在使用MVC 4并希望稍微整理一下我的视图,因此决定在渲染过程中创建多个局部视图并将它们组合在一起.

当渲染的视图很少 @Html.RenderPartial('path\to\my\partialView.cshtml')但是失败时,如果此partialView.cshtml又在其中进一步@Html.RenderPartial('path\to\my\otherPartialView.cshtml')定义,则此方法有效.

我得到的错误就像使用RenderPartial或Partial方法一样

error CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments
error CS1503: Argument 1: cannot convert from 'void' to 'System.Web.WebPages.HelperResult'
Run Code Online (Sandbox Code Playgroud)

有没有办法在MVC4中我们可以实现整理我的大视图标记文件?即尝试逐步用其他部分视图组成部分视图.

编辑

只是为了提供更多细节.

我的移动视图如下所示:

文件:ManageLoads.Mobile.cshtml

位置:Views-> Shipper-> ManageLoads

在这个视图中我有这样的代码:

<div id="landingPage" ng-show="MenuSelection=='DefaultPage'">
            @Html.Partial("~/Views/Shipper/_DashboardPartial.cshtml")
            <div class='message {{MessageClass}}'>
?               <i class='{{MessageIcon}}'></i>
?               <p>{{Message}}</p>
            </div>
        </div>
Run Code Online (Sandbox Code Playgroud)

这部分工作正常没有问题.现在在_DashboardPartial.cshtml中,如果我引用了另一个局部视图,它就会失败.

<div id="warehouseSelection" ng-show="getStep()==1">
   {@Html.RenderPartial("~/Views/Shipper/mobilePartials/_MyWarehouse.cshtml");}
</div>
Run Code Online (Sandbox Code Playgroud)

这会打破并抛出错误,但如果我复制粘贴"_MyWarehouse.cshtml"的内容,它会再次开始工作.我已经验证了_MyWarehouse.cshtml的路径是正确的,所以我怀疑它与导致问题的RenderPartial方法的嵌套有关.

关心Kiran

Tom*_*mmy 23

我看到的第一个问题是您的Html.RenderPartial语法不正确.@应该在花括号之外,如下所示:

@{Html.RenderPartial("~/Views/Shipper/mobilePartials/_MyWarehouse.cshtml");}
Run Code Online (Sandbox Code Playgroud)

其次,我想知道这里的组合Html.PartialHtml.RenderPartial是否会引起一些问题.尝试使用Html.RenderPartial上面的语法两者来查看是否修复了您的错误.