剃刀 – MVC布局VS MVC主页

我正在开始学习MVC4。我遇到了基于剃刀模板或主页创建视图的两种可能性。

我想了解两者之间的实际差异。

现在,我可以看到,如果我使用主页面创建一个视图,我可以覆盖几个部分。例如,如果我的主人定义了一个“左列”占位符和一个“正文”占位符,我不仅可以为特定视图定义正文,还可以在“左列”部分中显示内容,以显示控件绑定到页面的上下文(从搜索框到股票报价查看器)。
此外,无法通过使用Razor模板来定义主页面,这些模板比其他语法更为冗长(部分错误someone设法破解此方面)。

使用Razor Layouts,我只能定义一个可以被特定视图覆盖的页面一个连续块,并且我应该使用多个布局(打破DRY)在页面的其他部分进行一些更改。我以前的陈述是正确的还是我错过了什么?

显然,我可以通过充分利用jQuery来呈现页面任何部分的内容,但这又是另一回事

解决方法

您可以使用剃须刀的部分。 Scott Gu在这里写道: http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx

在您的布局中,您可以根据需要定义多个部分:

<div id="leftMenu">
    @RenderSection("LeftMenu",required: false)
</div>

您可以在视图中覆盖它:

@section LeftMenu {
    <div>... here comes the left menu for this view ...</div>
}

您还可以测试视图中是否已经定义了一个部分,如果不提供一些内容

@if (IsSectionDefined("LeftMenu")) { 
    @RenderSection("LeftMenu")
}
else { 
    <div>Some default left menu</div>
}

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...