21

我注意到视图和局部视图之间似乎没有真正的区别。例如,可以创建一个视图但可以通过使用

@Html.Partial("ViewName")

或通过指定其操作将其返回为

return PartialView();

我注意到相反的情况也是如此 - 即,可以创建部分视图,但如果它作为完整视图返回,它将以视图的默认布局显示。

我的问题是——在 Visual Studio 中添加新视图时,可以选择是否创建部分视图。这不是多余的吗,因为无论如何视图都可以呈现为部分视图和完整视图?

4

8 回答 8

17

视图和部分视图是有区别的,区别更多在于它们的用法,而不是技术。

View 旨在用作应用程序的完整页面,它需要布局,<html>并且<title>. 部分视图更像是其他视图的可重用部分。部分不代表完整页面,它们被插入到其他视图中。

从技术角度来看,return View("SameView");渲染视图包括布局页面,并通过渲染内容返回相同的视图return PartialView("SameView");,但忽略布局页面的内容。

于 2013-09-18T13:02:35.350 回答
13

没有区别 - 这是真的。但是当你说“部分视图”时,你所有的队友都明白你的意思是可重用的视图,它将在网站的许多地方使用。

于 2013-09-18T12:43:11.853 回答
5

将部分视图视为 ASP.NET WebForms 中的用户控件。如果您想集中功能,则使用部分视图,因此它可以在您网站的许多部分中使用。这就是局部视图的目的。

希望我已经回答了你的问题。

于 2013-09-18T12:44:41.163 回答
2

两件事情。首先,在某种程度上你是对的。但分离可重用代码更像是语义上的事情。例如,当您需要显示一个对话框时,它也派上用场,但仅当用户与页面进行某种交互时,例如单击按钮。使用部分视图,您不必在页面加载时在页面上对此进行标记,从而减小文件大小。当您在局部视图中编写标记/代码时,您不必编写整个<html></html>代码块。相反,您只需创建一个<div></div>或任何您需要的东西。

关于在 Visual Studio 中创建视图的一点。不,这不是多余的,因为当您创建局部视图时,它不使用您的主布局文件。

于 2013-09-18T12:53:23.900 回答
2

实际上,它们之间没有区别。但是,当您将 html 对象确认为 Partial View 时,它被视为一个独立的对象,可以在不同的地方提供服务,就像 web-part/User-Controls 及其轻量级一样。

于 2013-09-18T13:00:10.957 回答
1

部分视图保留用作主页(父页面)的部分页面。
局部视图是什么意思?实际上,在主页面中,我们将拥有所有 HTML 页面属性,如下所示:
html lang="en"
head
title
meta
body

但在局部视图中,我们不会拥有上述所有属性。

找出部分页面的特点:
1. 部分页面会轻等,适合任何视图。
2. 这将用作可重用组件。
3. 部分视图将在视图(父视图或页面)内呈现。

对于所有来自 ASP.Net 背景的人来说,他们可以将部分视图理解为用户控制。

谢谢阿法扎尔 mdafazal@gmail.com

于 2013-12-05T13:18:23.090 回答
0

为了具体回答您的问题,在 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

正如您所看到的,在后台没有任何花哨的事情发生,或者在某个秘密文件中设置了特殊属性。这些选项仅用于在页面上获取一些默认标记。这是否实用纯粹是主观的!

于 2015-06-01T23:59:35.237 回答
0

很晚了,但可能对有同样问题的人有用。局部视图在您希望根据某些用户选择加载视图的情况下很有帮助。

例如,假设父视图中有一个下拉菜单,显示用户可以执行的三个操作。根据用户的选择,可以将部分视图加载到父视图中,而不是在父视图本身中保留隐藏的 DIV,从而使父视图变亮。当我们有多个基于此类用户选择的 DIV 时,这将非常有用

于 2016-03-28T06:30:27.563 回答