2014-11-08 79 views
2

正如我所看到的主布局和局部视图具有相同的功能。例如我有一个主布局页面,其中有<html> <head> <body>元素。所有的页面都从它继承,然后我有10页,例如他们都有相同的导航栏,我应该做什么,我应该创建母版页,从第一母版页继承,所有这10页继承自第二母版页,或者我应该创建部分视图并在全部10页中呈现。何时使用主布局和局部视图MVC c#?

+0

尝试阅读本http://weblogs.asp.net/scottgu/asp-net-mvc-3-layouts – 2014-11-08 08:20:46

回答

0

他们有不同的预期用途。

主视图可以看作是主模板或布局,其中某个区域或模块中的所有页面都将使用该模板作为基本布局。他们经常有RenderSection和RenderBody助手标签。

部分视图是指当您经常使用标签和标记的片段时,因此您将它们归入部分视图以重用它们。

一个典型的网站可能有一个或两个母版页(可能是一个面向公众的页面,未经过身份验证,第二个页面是内部的已验证页面)。主页面将包含标题,正文,页脚等部分。你经常在他们身上贴上品牌标签,还有导航栏,甚至是新闻栏目,博客文章,或者其他你通常在周围内容中看到的东西。

根据你的描述,听起来你可能想要两个不同的母版页,每个母版页都有一组相似的视图。

部分视图通常会像数据网格,页脚或图表或任何可重用的东西。

0

“主”是Web窗体的术语。避免在MVC环境中使用它。在MVC中,你有布局,视图和局部视图。实际上,这些都只是“意见”。布局的关键区别仅仅在于它将用作布局,而视图使用布局。局部视图实际上只是一个不使用布局的视图。

就继承而言,由于布局只是一个视图,因此它既可以是布局,也可以是使用布局。这是你的延伸点。例如:

_Layout.cshtml

<html> 
    <head> 
    </head> 
    <body> 
     @RenderBody() 
    </body> 
</html> 

_SubLayout.cshtml

@{ Layout = "~/Views/Shared/_Layout.cshtml"; } 

<div class="content"> 
    @RenderBody() 
</div> 

SomeView.cshtml

@{ Layout = "~/Views/Shared/_SubLayout.cshtml"; } 

<p>Foo</p> 

用于SomeView.cshtml一次渲染生成的HTML是:

<html> 
    <head> 
    </head> 
    <body> 
     <div class="content"> 
      <p>Foo</p> 
     </div> 
    </body> 
</html>