我在MVC4
面临一个问题。如果我在调用.cshtml
时未提供RenderPartial
,则表示不会调用部分视图。
例如
@Html.RenderPartial("_Common.cshtml") //it is working
@Html.RenderPartial("_Common") //it is not working
我的问题是它无效的原因?
答案 0 :(得分:2)
正如Zabavsky所提到的,部分视图(双扩展名)上的文件名可能不正确。昨天刚刚在一个项目上做了那么容易,但是我认为你应该使用Partial
而不是RenderPartial
只是为了澄清应该工作的选项:
以下示例假定使用cshtml文件。
RenderPartial
:// This looks in default view folder, then shared, checking for .aspx, .cshtml etc
Html.RenderPartial("DefinitionDetails");
// This looks in specified path and requires the extension
Html.RenderPartial("~/Views/Definition/DefinitionDetails.cshtml");
Partial
进行内联Razor语法:// This looks in default view folder, then shared, checking for .aspx, .cshtml etc
@Html.Partial("DefinitionDetails")
// This looks in specified path and requires the extension
@Html.Partial("~/Views/Definition/DefinitionDetails.cshtml")
注意:显然RenderPartial
比Partial
略快,但我也希望完全修改后的名称比让MVC搜索文件更快。
如果您在循环中(即从视图模型中的集合中)生成局部视图,则可能需要通过特定的视图模型:
@foreach (var group in orderedGroups)
{
Html.RenderPartial("~/Views/ControllerName/ViewName.cshtml", group);
}