Asp.net MVC中的部分视图有什么意义

时间:2013-09-18 12:38:56

标签: c# html .net asp.net-mvc razor

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

将其呈现为部分视图
@Html.Partial("ViewName")

或指定其操作将其返回为

return PartialView();

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

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

8 个答案:

答案 0 :(得分:16)

视图和部分视图之间存在 差异,而不同之处在于它们的使用情况,而非技术性。

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

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

答案 1 :(得分:13)

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

答案 2 :(得分:5)

将部分视图视为ASP.NET WebForms中的用户控件。如果您希望集中使用某种功能,则可以使用部分视图,因此可以在网站的许多部分中使用。这是部分观点的目的。

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

答案 3 :(得分:2)

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

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

答案 4 :(得分:2)

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

答案 5 :(得分:1)

部分视图保留用作主页面(父页面)的部分页面。
部分观点意味着什么?实际上在主页面中我们将拥有所有HTML页面属性,如下所示:
html lang =“en”

标题

但在局部视图中,我们不具备以上所有属性。

查找部分页面的功能:
1.部分页面将轻松等待并适合任何视图。
这将用作可重复使用的组件。
3.部分视图将在视图(父视图或页面)内呈现。

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

由于 Afazal mdafazal@gmail.com

答案 6 :(得分:0)

要专门回答您的问题,在Visual Studio中添加新视图时,您将根据对话框中的选择为您生成一些非常基本的标记作为起点。

以下是Visual Studio 2010(VB.NET)中针对&#34; Partial&#34;的不同组合生成的标记。复选框和&#34;布局&#34;复选框:

# "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

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

答案 7 :(得分:0)

很晚但对有同样问题的人可能有用。在您希望根据某些用户选择加载视图的场景中,部分视图很有用。

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