@ Html.RenderPartial(" _Common.cshtml")和@ Html.RenderPartial(" _Common")之间有什么区别?

时间:2014-05-22 08:33:12

标签: asp.net-mvc asp.net-mvc-4 razor

我在MVC4面临一个问题。如果我在调用.cshtml时未提供RenderPartial,则表示不会调用部分视图。

例如

 @Html.RenderPartial("_Common.cshtml") //it is working
 @Html.RenderPartial("_Common") //it is not working

我的问题是它无效的原因?

1 个答案:

答案 0 :(得分:2)

正如Zabavsky所提到的,部分视图(双扩展名)上的文件名可能不正确。昨天刚刚在一个项目上做了那么容易,但是我认为你应该使用Partial而不是RenderPartial

只是为了澄清应该工作的选项:

1)如果提供路径,则视图文件的扩展名为

2)如果您不提供路径,请不要提供扩展名。

以下示例假定使用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")

注意:显然RenderPartialPartial 略快,但我也希望完全修改后的名称比让MVC搜索文件更快。

如果您在循环中(即从视图模型中的集合中)生成局部视图,则可能需要通过特定的视图模型:

e.g。

   @foreach (var group in orderedGroups)
   {
       Html.RenderPartial("~/Views/ControllerName/ViewName.cshtml", group);
   }