部分视图和布局之间有什么区别?

19

我曾在项目中使用过Partial View和Layout概念,但我无法区分它们。但我感觉它们都在做同一件事。有人能简要介绍一下Partial View和Layout的概念及其不同之处吗?

4个回答

48
除了Josh的答案之外,我的超级画技也想为您画一幅图,以便更好地解释所有内容。
您可以看到页眉和页脚,甚至可以在那里使用部分视图。

编辑...


布局

为了给您提供一个不同的示例,说明为什么要使用每个组件(布局/视图/部分视图),假设您拥有一个共有100页的网站,并且想更新您的网站设计,您会怎么做?
单独更新每个页面将让我发疯,因为您需要不断地复制代码来更新您的设计。
这就是布局视图可以帮助您解决的问题,您可以使用布局视图为所有页面创建模板。

视图

在我们现有的100页网站的场景中,每个页面都将具有独特的内容,而视图允许我们在使用布局的同时显示此内容。

部分视图

现在假设我们允许访问者在我们的页面上发表评论,每个评论必须看起来一致,并且在我们网站的所有其他评论中行为完全相同... 为了实现这一点,您将使用作为评论模板的部分视图
这样做的好处是您不必在每个地方重复代码,只需创建一个部分视图即可呈现任何评论。

你好,老板Aydin Adn,如果我使用Partial View,它会产生与您在此处发布的相同输出。而且,如果我使用Layout,它也会产生与您在此处发布的相同输出。那么为什么我要使用两个不同的概念来完成同样的工作呢? - DINESH C
3
布局(layout)在生成页面时只使用一次。局部视图(partial)可以在同一页上多次使用,以重复内容并随之发送数据,如图形化表示的文章(ARTICLEs)。当您想要更新站点的通用格式时,您需要编辑布局,以便更改会传播到使用布局的所有页面。如果您想要更改文章的显示方式,则需要编辑局部视图。关键是,您只需编辑一个文件即可,更改将传播到所有使用该局部视图的地方。 - Josh
绝对的,事实上这是强烈建议的。查看此答案中的示例,您可以使用布局来创建站点的一般结构、格式和外观。然后,您可以使用视图生成通常包含在<body></body>标记中的HTML内容。在一个视图中,您可以使用Partial重复_较小_的视图。你真的应该阅读这些资料:https://dev59.com/JGAf5IYBdhLWcg3wXhsJ#24731124。此外,您可以随时搜索Google,寻找“asp.net mvc partial”和“asp.net mvc layout”。 - Josh
谢谢@Aydin Adn。现在我明白了区别。重点是页面内部可以多次使用局部视图,但布局只能使用一次。 - DINESH C
谢谢@Josh。现在我明白了区别。重点是页面内部可以多次使用局部视图,但布局只能使用一次。 - DINESH C
显示剩余2条评论

4
布局允许您在整个网站中生成一致的外观。类似于ASP.NET的主页面,它们在整个站点中都具有相同的外观和感觉。
什么是布局? 通常情况下,您希望在网站/应用程序的所有页面中保持一致的外观和感觉。ASP.NET 2.0引入了“主页面”的概念,使得在使用.aspx基础页面或模板时可以实现这一点。Razor也支持此概念,并提供了一个名为“布局”的功能,允许您定义一个公共站点模板,然后在站点上的所有视图/页面中继承其外观和感觉-来源:http://weblogs.asp.net/scottgu/asp-net-mvc-3-layouts 部分类视图允许您构建视图并将其呈现在父视图内。例如,假设您有一个站点,允许您对文章发表评论。 显示和允许用户添加评论的部分是可重用代码片段,它被插入到您希望该功能存在的所有页面中。 这很重要的是,您可以修改单个部分类视图文件以更新呈现该部分的每个视图,而不是跟踪实现该代码的每个页面。
这是一个Youtube视频,它帮助我很好地理解了部分类视图。 https://www.youtube.com/watch?v=SABg7RyjX-4 编辑:此外,创建链接视频的人有一个完整的播放列表库,可以帮助新MVC编码器。他通过一些不错的例子演示了许多MVC功能。 https://www.youtube.com/user/kudvenkat

3

非技术性解释:

布局是房子的基础,视图是房子里的一个房间,而PartialView则是这个房间里的窗户或者墙上的电源插座。


先生,我已经知道这个了。我想要一个更明确的例子作为答案。 - DINESH C

2
让我们简单明了地回答这个问题:
1) 布局是可以在单个页面中包含一次并且可以在任意数量的页面中使用相同布局的东西。
2) 部分视图是可以在单个页面中多次包含相同内容(在需要时)并且可以在任意数量的页面中使用的东西。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接