呈现子模板的适当方法是什么?
有什么区别?两者似乎都适合我。
为什么@Html.RenderPartial()
不再有效?
答案 0 :(得分:125)
Html.Partial("MyView")
将“MyView”视图呈现给MvcHtmlString
。它遵循视图查找的标准规则(即检查当前目录,然后检查Shared
目录)。
Html.RenderPartial("MyView")
与Html.Partial()
相同,只是它将其输出直接写入响应流。这样更有效,因为视图内容不会缓存在内存中。但是,因为该方法不返回任何输出,@Html.RenderPartial("MyView")
将不起作用。您必须在代码块中包含调用:@{Html.RenderPartial("MyView");}
。
RenderPage("MyView.cshtml")
将指定的视图(由路径和文件名而不是视图名称标识)直接呈现到响应流,如Html.RenderPartial()
。您可以通过将其作为第二个参数
RenderPage("MyView.cshtml", MyModel)
答案 1 :(得分:16)
我更喜欢
@RenderPage("_LayoutHeader.cshtml")
在
@{ Html.RenderPartial("_LayoutHeader"); }
只是因为语法更容易且更具可读性。除此之外,似乎没有任何明显的功能差异。
编辑:RenderPartial的一个优点是您不必指定整个路径或文件扩展名,它将自动搜索公共位置。
答案 2 :(得分:6)
RenderPartial 方法不会像大多数其他帮助程序方法一样返回HTML标记。相反,它写道 直接内容到响应流,这就是为什么我们必须使用分号称它为完整的C#行。
这比从局部视图缓冲渲染的HTML稍微有效一些,因为它将被写入 无论如何响应流。如果您更喜欢更一致的语法,可以使用 Html.Partial 方法 与 RenderPartial 方法完全相同,但返回一个HTML片段,可以用作 @ Html.Partial(“Product”,p)。
答案 3 :(得分:2)
我们也可以使用部分视图传递模型。 @ Html.Partial( “MyView的”, “为MyModel”);
答案 4 :(得分:0)
@RenderPages()
以上在ASP.NET MVC中不起作用。它只适用于WebPages。
@Html.Partial("_Footer")
您需要在ASP.NET MVC中使用上述内容。