【发布时间】:2011-05-28 22:54:21
【问题描述】:
渲染子模板的适当方式是什么?
有什么区别?两者似乎都对我有用。
为什么@Html.RenderPartial() 不再起作用?
【问题讨论】:
标签: asp.net-mvc razor renderpartial
渲染子模板的适当方式是什么?
有什么区别?两者似乎都对我有用。
为什么@Html.RenderPartial() 不再起作用?
【问题讨论】:
标签: asp.net-mvc razor renderpartial
我更喜欢
@RenderPage("_LayoutHeader.cshtml")
结束
@{ Html.RenderPartial("_LayoutHeader"); }
只是因为语法更简单,更易读。除此之外,在功能方面似乎没有任何差异。
编辑:RenderPartial 的一个优点是您不必指定整个路径或文件扩展名,它会自动搜索公共位置。
【讨论】:
RenderPage。
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 沿其模型嵌套一个完整的页面?我想通过指定一个特定的查询参数来嵌套一个不同的页面,这反过来会过滤该页面中的数据,此外,删除它自己的布局。
RenderPartial 方法不像大多数其他辅助方法那样返回 HTML 标记。相反,它写道 内容直接发送到响应流,这就是为什么我们必须像完整的 C# 行一样调用它,使用分号。
这比从局部视图缓冲渲染的 HTML 稍微高效一些,因为它将被写入 无论如何响应流。如果您喜欢更一致的语法,可以使用 Html.Partial 方法,该方法 与 RenderPartial 方法完全相同,但返回一个 HTML 片段并可用作 @Html.Partial("产品", p).
【讨论】:
我们也可以使用局部视图传递模型。 @Html.Partial("MyView","MyModel");
【讨论】:
@RenderPages()
以上在 ASP.NET MVC 中不起作用。它仅适用于网页。
@Html.Partial("_Footer")
您需要在 ASP.NET MVC 中使用上述内容。
【讨论】: