【发布时间】:2011-01-03 20:15:17
【问题描述】:
ASP.NET MVC 中的 View 和 PartialView 有什么区别?
乍一看,这两者的需求对我来说似乎并不明显。
【问题讨论】:
标签: asp.net-mvc views
ASP.NET MVC 中的 View 和 PartialView 有什么区别?
乍一看,这两者的需求对我来说似乎并不明显。
【问题讨论】:
标签: asp.net-mvc views
理论上,答案是:局部视图是您嵌入在主视图中的“子视图”——您可以在多个视图中重复使用它,例如侧边栏。 p>
在实践中,答案是:很少。
理论上,局部视图比标准视图更轻量级,但是将“常规”视图传递给RenderPartial 完全没问题,而且性能似乎完全一样。我经常将常规 .aspx 视图用作“部分”视图,因为您可以让它们引用主视图,以便提供模板化内容,就像您可以在 ASP.NET WebForms 中使用 UserControls 一样。见here。
部分视图更像是门户网站上的 Web 部件 - 它们是完全独立的对象。如果布局简单且静态,或者当您在标准视图中没有 <html> 和 <body> 标记时对 Intellisense 错误感到恼火,请使用它们。
【讨论】:
它是这样工作的:
return View() 视图内容进入/Shared/_Layout.cshtml 的@RenderBody()
return PartialView() 它只返回视图内容
【讨论】:
视图是导致显示的页面的一般结果。它是除母版页外的最高级别容器。而部分视图是针对可以在不同页面上重复使用或在一个页面中多次重复使用的一小部分内容。
如果您来自网络表单,则视图类似于网络内容表单,而部分视图类似于用户控件。
【讨论】:
如果您来自网络表单背景,请将 PartialView 视为用户控件。
【讨论】:
查看 StackOverflow.com 网站: 主站点(视图)包含如下组件:
所以标签、相关、广告等可以组成部分视图。这样做的好处是 PartialViews 可以简单地被 OutputCache 缓存,而不是重新创建所有站点:性能提升。
【讨论】:
考虑像 web 表单中的控件这样的部分视图,其想法是部分是可重用的
【讨论】:
@{ 布局="_布局"; }
<!DOCTYPE html> <html> <head> </head> <body> </body> </html>
@{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 文件夹中)。这 意味着您可以创建特定于控制器的部分视图或共享 部分视图。
祝你好运
【讨论】: