我注意到视图和局部视图之间似乎没有真正的区别。例如,可以创建一个视图,但可以通过使用
@Html.Partial("ViewName")
或通过指定其操作将其返回为
return PartialView();
我注意到相反的情况也是如此 - 即,可以创建部分视图,但如果它作为完整视图返回,它将以视图的默认布局显示。
我的问题是——在 Visual Studio 中添加新视图时,可以选择是否创建部分视图。这不是多余的吗,因为无论如何视图都可以呈现为部分视图和完整视图?
我注意到视图和局部视图之间似乎没有真正的区别。例如,可以创建一个视图,但可以通过使用
@Html.Partial("ViewName")
或通过指定其操作将其返回为
return PartialView();
我注意到相反的情况也是如此 - 即,可以创建部分视图,但如果它作为完整视图返回,它将以视图的默认布局显示。
我的问题是——在 Visual Studio 中添加新视图时,可以选择是否创建部分视图。这不是多余的吗,因为无论如何视图都可以呈现为部分视图和完整视图?
视图和部分视图是有区别的,区别更多在于它们的用法,而不是技术。
View 旨在用作应用程序的完整页面,它需要布局,<html>
并且<title>
. 部分视图更像是其他视图的可重用部分。部分不代表完整页面,它们被插入到其他视图中。
从技术角度来看,return View("SameView");
渲染视图包括布局页面,并通过渲染内容返回相同的视图return PartialView("SameView");
,但忽略布局页面的内容。
没有区别 - 这是真的。但是当你说“部分视图”时,你所有的队友都明白你的意思是可重用的视图,它将在网站的许多地方使用。
将部分视图视为 ASP.NET WebForms 中的用户控件。如果您想集中功能,则使用部分视图,因此它可以在您网站的许多部分中使用。这就是局部视图的目的。
希望我已经回答了你的问题。
两件事情。首先,在某种程度上你是对的。但分离可重用代码更像是语义上的事情。例如,当您需要显示一个对话框时,它也派上用场,但仅当用户与页面进行某种交互时,例如单击按钮。使用部分视图,您不必在页面加载时在页面上对此进行标记,从而减小文件大小。当您在局部视图中编写标记/代码时,您不必编写整个<html></html>
代码块。相反,您只需创建一个<div></div>
或任何您需要的东西。
关于在 Visual Studio 中创建视图的一点。不,这不是多余的,因为当您创建局部视图时,它不使用您的主布局文件。
实际上,它们之间没有区别。但是,当您将 html 对象确认为 Partial View 时,它被视为一个独立的对象,可以在不同的地方提供服务,就像 web-part/User-Controls 及其轻量级一样。
部分视图保留用作主页(父页面)的部分页面。
局部视图是什么意思?实际上,在主页面中,我们将拥有所有 HTML 页面属性,如下所示:
html lang="en"
head
title
meta
body
但在局部视图中,我们不会拥有上述所有属性。
找出部分页面的特点:
1. 部分页面会轻等,适合任何视图。
2. 这将用作可重用组件。
3. 部分视图将在视图(父视图或页面)内呈现。
对于所有来自 ASP.Net 背景的人来说,他们可以将部分视图理解为用户控制。
谢谢阿法扎尔 mdafazal@gmail.com
为了具体回答您的问题,在 Visual Studio 中添加新视图时,您将根据对话框中的选择生成一些非常基本的标记作为起点。
这是在 Visual Studio 2010 (VB.NET) 中为“部分”复选框和“布局”复选框的不同组合生成的标记:
# "Create as a partial view" unchecked
# "Use a layout or master page:" unchecked
@Code
Layout = Nothing
End Code
<!DOCTYPE html>
<html>
<head runat="server">
<meta name="viewport" content="width=device-width" />
<title>MyView</title>
</head>
<body>
<div>
</div>
</body>
</html>
# "Create as a partial view" unchecked
# "Use a layout or master page:" checked
@Code
ViewData("Title") = "MyView"
Layout = "~/ThePath/ToThe/Layout.vbhtml"
End Code
<h2>MyView</h2>
# "Create as a partial view" checked
# "Use a layout or master page:" greyed out
# returns an empty file
正如您所看到的,在后台没有任何花哨的事情发生,或者在某个秘密文件中设置了特殊属性。这些选项仅用于在页面上获取一些默认标记。这是否实用纯粹是主观的!
很晚了,但可能对有同样问题的人有用。局部视图在您希望根据某些用户选择加载视图的情况下很有帮助。
例如,假设父视图中有一个下拉菜单,显示用户可以执行的三个操作。根据用户的选择,可以将部分视图加载到父视图中,而不是在父视图本身中保留隐藏的 DIV,从而使父视图变亮。当我们有多个基于此类用户选择的 DIV 时,这将非常有用