【问题标题】:What is the difference between a View and a PartialView in ASP.NET MVC?ASP.NET MVC 中的 View 和 PartialView 有什么区别?
【发布时间】:2011-01-03 20:15:17
【问题描述】:

ASP.NET MVC 中的 View 和 PartialView 有什么区别?

乍一看,这两者的需求对我来说似乎并不明显。

【问题讨论】:

    标签: asp.net-mvc views


    【解决方案1】:

    理论上,答案是:局部视图是您嵌入在主视图中的“子视图”——您可以在多个视图中重复使用它,例如侧边栏。 p>

    在实践中,答案是:很少。

    理论上,局部视图比标准视图更轻量级,但是将“常规”视图传递给RenderPartial 完全没问题,而且性能似乎完全一样。我经常将常规 .aspx 视图用作“部分”视图,因为您可以让它们引用主视图,以便提供模板化内容,就像您可以在 ASP.NET WebForms 中使用 UserControls 一样。见here

    部分视图更像是门户网站上的 Web 部件 - 它们是完全独立的对象。如果布局简单且静态,或者当您在标准视图中没有 <html><body> 标记时对 Intellisense 错误感到恼火,请使用它们。

    【讨论】:

    • return View() 和 return PartialView() 怎么样,在我看来完全没有区别
    【解决方案2】:

    它是这样工作的:

    • return View() 视图内容进入/Shared/_Layout.cshtml 的@RenderBody()

    • return PartialView() 它只返回视图内容

    【讨论】:

      【解决方案3】:

      视图是导致显示的页面的一般结果。它是除母版页外的最高级别容器。而部分视图是针对可以在不同页面上重复使用或在一个页面中多次重复使用的一小部分内容。

      如果您来自网络表单,则视图类似于网络内容表单,而部分视图类似于用户控件。

      【讨论】:

        【解决方案4】:

        如果您来自网络表单背景,请将 PartialView 视为用户控件。

        【讨论】:

          【解决方案5】:

          查看 StackOverflow.com 网站: 主站点(视图)包含如下组件:

          • 标签
          • 相关
          • 广告

          所以标签、相关、广告​​等可以组成部分视图。这样做的好处是 PartialViews 可以简单地被 OutputCache 缓存,而不是重新创建所有站点:性能提升。

          【讨论】:

          • 但是,您大概可以设想一个系统,它可以简单地使“视图”包含“视图”,而不需要额外的类型?
          • 包含其他视图的视图非常方便。这取决于您,您可以选择将一个大视图或一个视图作为一组较小的视图。所有部分视图都应该独立于其他视图,并且可以将其他类型作为返回值。
          【解决方案6】:

          考虑像 web 表单中的控件这样的部分视图,其想法是部分是可重用的

          【讨论】:

            【解决方案7】:

            在 Core Mvc 中查看

            • 视图包含布局页面(_ViewStart)或布局属性。

            @{ 布局="_布局"; }

            • 在渲染任何视图之前 _ViewStart 被渲染。
            • 视图可能有标记标签为
            <!DOCTYPE html>   
             <html>
                 <head>
                 </head>
                 <body>    
                 </body> 
              </html>
            
            • View 不是 Lightwight 作为局部视图。
            • 视图将通过使用@RenderBody() 方法在布局中呈现 (视图/共享/_Layout.cshtml)。
            • 在 Action 中使用 return View() 调用。

            局部视图

            • 部分视图不包含布局页面布局属性
            • 它不验证 viewstart.cshtml。我们不能放通用代码 对于 viewStart.cshtml.page 中的部分视图。
            • 在 MVC 中,部分视图专门设计用于在视图中呈现
            • 我们可以将常规视图传递给 RenderPartial 方法。
            @{await Html.PartialAsync("Partial"); }

            部分视图演示示例为强类型

            在视图中

            @model List<Student>;
            @{
                Layout = "_Layout";
            }  
             
            <div>@await Html.PartialAsync("Partial",Model)</div>
            

            在局部视图中

            @model List<Student>; <ul>
                 @foreach (Student student in Model)
                 {
                    <li>@student.ID</li>
                    <li>@student.Name</li>
                    <li>@student.Age</li>
                 }
             
                 </ul>
            
            • SP.NET Core MVC 以与常规相同的方式查找局部视图 视图(即在 Views/ 和 Views/Shared 文件夹中)。这 意味着您可以创建特定于控制器的部分视图或共享 部分视图。

              祝你好运

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-05-06
              • 2023-03-21
              • 1970-01-01
              相关资源
              最近更新 更多