加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

剃刀 – MVC布局VS MVC主页

发布时间:2020-12-16 00:23:04 所属栏目:asp.Net 来源:网络整理
导读:我正在开始学习MVC4。我遇到了基于剃刀模板或主页创建视图的两种可能性。 我想了解两者之间的实际差异。 现在,我可以看到,如果我使用主页面创建一个视图,我可以覆盖几个部分。例如,如果我的主人定义了一个“左列”占位符和一个“正文”占位符,我不仅可
我正在开始学习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>
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读