我正在开始学习MVC4。我遇到了基于剃刀模板或主页创建视图的两种可能性。
我想了解两者之间的实际差异。
现在,我可以看到,如果我使用主页面创建一个视图,我可以覆盖几个部分。例如,如果我的主人定义了一个“左列”占位符和一个“正文”占位符,我不仅可以为特定视图定义正文,还可以在“左列”部分中显示内容,以显示控件绑定到页面的上下文(从搜索框到股票报价查看器)。
此外,无法通过使用Razor模板来定义主页面,这些模板比其他语法更为冗长(部分错误:someone设法破解此方面)。
使用Razor Layouts,我只能定义一个可以被特定视图覆盖的页面的一个连续块,并且我应该使用多个布局(打破DRY)在页面的其他部分进行一些更改。我以前的陈述是正确的还是我错过了什么?
解决方法
您可以使用剃须刀的部分。 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> }