题 来自RAZOR中不同文件夹的RenderPartial


我一直在尝试将我的aspx页面转换为cshtml,并且在从另一个文件夹渲染部分页面时遇到问题。

我以前做的:

<% Html.RenderPartial("~/Views/Inquiry/InquiryList.ascx", Model.InquiryList.OrderBy("InquiryId", MvcContrib.Sorting.SortDirection.Descending));%>

我认为相当于:

@Html.RenderPartial("~/Views/Inquiry/_InquiryList.cshtml", Model.InquiryList.OrderBy("InquiryId", MvcContrib.Sorting.SortDirection.Descending))

这显然不起作用,我收到以下错误。

CS1973:   'System.Web.Mvc.HtmlHelper'   没有适用的方法命名   '部分'但似乎有一个   该名称的扩展方法。   扩展方法不能   动态调度。考虑   转换动态参数或   不使用调用扩展方法   扩展方法语法。

如何使用Razor视图引擎实现这一目标?


11
2017-12-24 04:49


起源




答案:


的RenderPartial 不返回字符串或IHtmlString值。但是通过在响应中调用Write来进行渲染。

你可以使用 局部 扩展,这将返回一个MvcHtmlString

 @Html.Partial( ....

要么

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

如果你真的想要RenderPartial


24
2017-12-24 06:38



.Partial解决了这个问题。 - Allfocus
直接写入响应流被认为是更有效的,因此您仍然应该使用RenderPartial,除非您需要将partial作为字符串进行编辑或其他原因 - BritishDeveloper


编译器无法选择正确的方法,因为您的模型是动态的。将通话更改为:

@Html.RenderPartial("~/Views/Inquiry/_InquiryList.cshtml", (List<string>)Model.InquiryList)

或者查询列表的任何数据类型。


7
2017-12-24 06:31





请记住包含您的强类型 @model 您的新Razor视图中的指令。将视图从.aspx转换为.cshtml时,这是一个简单的步骤。如果你忘了,那 'System.Web.Mvc.HtmlHelper'没有名为'Partial'的适用方法 可能会出现错误消息。


2
2017-07-06 01:40