在ASP.NET MVC中,View和PartialView有什么区别?
乍一看,我不明白为什么两者都需要。
在ASP.NET MVC中,View和PartialView有什么区别?
乍一看,我不明白为什么两者都需要。
理论上,答案是:部分视图是您在主视图中嵌入的“子视图” - 您可能会在多个视图中重复使用的内容,例如侧边栏。
实践上,答案是:非常少。
从理论上讲,部分视图比标准视图更轻量级,但是向RenderPartial
传递“常规”视图也完全可以,并且性能似乎完全相同。 我经常将常规.aspx视图用作“部分”视图,因为您可以使它们引用主视图以提供模板化的内容,就像在ASP.NET WebForms中使用UserControls一样。 参见此处。
部分视图更像门户上的Web部件 - 它们是完全自包含的对象。 如果布局简单且静态,或者如果您对没有在标准视图中使用<html>
和<body>
标记时出现的智能感知错误感到烦恼,则使用它们。
它的工作原理如下:
return View() 视图内容放在 /Shared/_Layout.cshtml 的 @RenderBody() 中
return PartialView() 仅返回视图内容
视图是页面显示的一般结果。它是除主控页之外的最高级容器。而部分视图是指可在不同页面上重复使用或在同一页面中多次使用的小型内容。
如果您来自WebForms,视图类似于Web内容表单,而部分视图则类似于用户控件。
如果你来自WebForms背景,可以将PartialView视为用户控件。
看看StackOverflow.com网站:
因此,标签、相关、广告等可以作为PartialViews组成。这样做的好处是,PartialViews可以简单地通过OutputCache进行缓存,而不是重新创建整个网站:提高性能。
@{ Layout="_Layout"; }
<!DOCTYPE html>
<html>
<head>
</head>
<body>
</body>
</html>
@{await Html.PartialAsync("Partial"); }
演示局部视图的强类型示例
in View
@model List<Student>; @{ Layout = "_Layout"; } <div>@await Html.PartialAsync("Partial",Model)</div>
in Partial View
@model List<Student>; <ul> @foreach (Student student in Model) { <li>@student.ID</li> <li>@student.Name</li> <li>@student.Age</li> } </ul>
ASP.NET Core MVC 与普通视图(即在 Views/ 和 Views/Shared 文件夹中)一样查找部分视图。这意味着您可以创建特定于控制器的部分视图或共享部分视图。
祝好运