11

我正在使用 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'

在 MVC4 中我们可以实现整理我的大视图标记文件的方法吗?即尝试逐步将部分视图与其他部分视图组合在一起。

编辑

只是为了提供更多细节。

我的移动视图如下所示:

文件:ManageLoads.Mobile.cshtml

位置:视图->托运人->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>

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

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

这会中断并引发错误,但是如果我将“_MyWarehouse.cshtml”的内容复制粘贴到那里,它会再次开始工作。我已经验证 _MyWarehouse.cshtml 的路径是正确的,所以我怀疑它与导致问题的 RenderPartial 方法的嵌套有关。

问候基兰

4

2 回答 2

29

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

@{Html.RenderPartial("~/Views/Shipper/mobilePartials/_MyWarehouse.cshtml");}

其次,我想知道Html.Partialand的组合是否在Html.RenderPartial这里引起了一些问题。尝试将两者Html.RenderPartial与上述语法一起使用,看看是否可以解决您的错误。

于 2013-11-11T13:51:13.157 回答
3

您有多种选择,例如:

(另外你应该考虑使用像'~/Views/someController/etc/to/my/partialView.cshtml'这样的根路径,甚至将你的代码移动到一些共享视图'~/Views/Shared/....'。但那是一切都在你身上)。

编辑:

请看看这篇文章。它解释了你应该如何使用提到的方法。它必须是这样的:

@{ Html.RenderPartial("ViewName");  }

@Html.Partial("ViewName")
于 2013-11-10T03:06:24.980 回答