Answers:
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)
@Html.Partial("MyView")
vs@{Html.RenderPartial("MyView");}
RenderPage
?我想通过指定特定的查询参数来嵌套另一个页面,该参数反过来将过滤该页面中的数据,此外,还要删除其自己的布局。
我更喜欢
@RenderPage("_LayoutHeader.cshtml")
过度
@{ Html.RenderPartial("_LayoutHeader"); }
仅因为语法更容易且可读性更高。除此之外,在功能上似乎没有任何区别。
编辑:RenderPartial的一个优点是您不必指定整个路径或文件扩展名,它会自动搜索公共位置。
RenderPage
由于语法我也同意。
该的RenderPartial方法不返回HTML标记像大多数其他辅助方法。相反,它直接将内容写入响应流,这就是为什么我们必须使用分号将其像完整的C#行一样调用。
这比从局部视图缓冲呈现的HTML效率更高,因为无论如何它将被写入响应流。如果您希望使用更一致的语法,则可以使用Html.Partial方法,该方法与RenderPartial方法完全相同,但是返回HTML片段,可以用作@ Html.Partial(“ Product”,p)。
@RenderPages()
以上在ASP.NET MVC中不起作用。它仅适用于WebPages。
@Html.Partial("_Footer")
您将需要在ASP.NET MVC中使用以上内容。