剃刀:@ Html.Partial()vs @RenderPage()
渲染子模板的适当方式是什么?
有什么区别? 两者似乎都适合我。
为什么@Html.RenderPartial()
不再工作?
Html.Partial("MyView")
将“MyView”视图呈现为MvcHtmlString
。 它遵循视图查找的标准规则(即检查当前目录,然后检查Shared
目录)。
Html.RenderPartial("MyView")
与Html.Partial()
相同,只是将其输出直接写入响应stream。 这是更高效的,因为视图内容不被缓冲在内存中。 但是,因为该方法不会返回任何输出,所以@Html.RenderPartial("MyView")
将不起作用。 您必须将该调用包装在代码块中: @{Html.RenderPartial("MyView");}
。
RenderPage("MyView.cshtml")
将指定的视图(通过path和文件名称而不是视图名称)直接呈现给响应stream,如Html.RenderPartial()
。 您可以将任何您喜欢的模型作为第二个参数提供给视图
RenderPage("MyView.cshtml", MyModel)
我更喜欢
@RenderPage("_LayoutHeader.cshtml")
过度
@{ Html.RenderPartial("_LayoutHeader"); }
只是因为语法更简单,而且更具可读性。 除此之外,似乎没有任何区别function明智。
编辑:RenderPartial的一个优点是你不必指定整个path或文件扩展名,它将自动search常见的地方。
RenderPartial方法不像大多数其他帮助方法那样返回HTML标记。 相反,它将内容直接写入响应stream,这就是为什么我们必须使用分号将它称为完整的C#行。
这比缓冲部分视图中呈现的HTML稍微有效,因为它将被写入响应stream。 如果您更喜欢更一致的语法,则可以使用Html.Partial方法,该方法与RenderPartial方法完全相同,但返回HTML片段,可用作@ Html.Partial(“Product”,p)。
我们也可以使用部分视图来传递模型。 @ Html.Partial( “MyView的”, “为MyModel”);
- 出生datevalidation不断显示
- 检查ViewBag是否有一个属性,有条件地注入JavaScript
- DisplayNameFor()从模型中的List <Object>
- 禁用Razor中的Visual Studio代码格式
- 剃刀语法 – foreach循环
- 如何创build自定义validation属性?
- 如何使用AJAX呈现部分表单元素
- 使用Razor View Engine从ASP.NET MVC 3的局部视图中将内容注入特定的部分
- 尝试“System.Web.Mvc.PreApplicationStartCode.Start()”到关键方法“System.Web.WebPages.Razor.PreApplicationStartCode.Start()”失败