【问题标题】:Razor: @Html.Partial() vs @RenderPage()剃刀:@Html.Partial() 与 @RenderPage()
【发布时间】:2011-05-28 22:54:21
【问题描述】:

渲染子模板的适当方式是什么?

有什么区别?两者似乎都对我有用。

为什么@Html.RenderPartial() 不再起作用?

【问题讨论】:

    标签: asp.net-mvc razor renderpartial


    【解决方案1】:

    我更喜欢

    @RenderPage("_LayoutHeader.cshtml")
    

    结束

    @{ Html.RenderPartial("_LayoutHeader"); }
    

    只是因为语法更简单,更易读。除此之外,在功能方面似乎没有任何差异。

    编辑:RenderPartial 的一个优点是您不必指定整个路径或文件扩展名,它会自动搜索公共位置。

    【讨论】:

    • 我认为这应该是评论而不是回答。由于语法,我也同意RenderPage
    【解决方案2】:
    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.RenderPartial("MyView");} 相对于@Html.RenderPartial("MyView") 效率增益的指标?
    • @Faust 你的意思是 Partial vd RenderPartial 吗?
    • @cacho:是的,我的评论应该是@Html.Partial("MyView") vs. @{Html.RenderPartial("MyView");}
    • 小修正:RenderPage() 中的第二个参数不是模型,它是通过 PageData 属性访问的 param[] 对象。它似乎像上面那样工作,因为默认情况下,来自“父”页面的模型被传递给“子”。 msdn.microsoft.com/en-us/library/…
    • 有没有办法通过调用RenderPage 沿其模型嵌套一个完整的页面?我想通过指定一个特定的查询参数来嵌套一个不同的页面,这反过来会过滤该页面中的数据,此外,删除它自己的布局。
    【解决方案3】:

    RenderPartial 方法不像大多数其他辅助方法那样返回 HTML 标记。相反,它写道 内容直接发送到响应流,这就是为什么我们必须像完整的 C# 行一样调用它,使用分号。

    这比从局部视图缓冲渲染的 HTML 稍微高效一些,因为它将被写入 无论如何响应流。如果您喜欢更一致的语法,可以使用 Html.Partial 方法,该方法 与 RenderPartial 方法完全相同,但返回一个 HTML 片段并可用作 @Html.Partial("产品", p).

    【讨论】:

      【解决方案4】:

      我们也可以使用局部视图传递模型。 @Html.Partial("MyView","MyModel");

      【讨论】:

        【解决方案5】:
        @RenderPages() 
        

        以上在 ASP.NET MVC 中不起作用。它仅适用于网页。

        @Html.Partial("_Footer")
        

        您需要在 ASP.NET MVC 中使用上述内容。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-09-04
          • 1970-01-01
          • 2011-10-10
          • 2020-01-27
          • 2011-07-01
          • 2012-06-30
          • 1970-01-01
          相关资源
          最近更新 更多