MVC4 Razor @RenderSection - 母版页设置

Mvc4的Razor视图引擎还提供了@RenderSection

我的理解:@RenderSection在母版页中占个位,然后让使用此母版页的子页自己去呈现他们的Section。

在母版页_Layout.cshtml中定义@RenderSection("Section名")

<body>
    <div id="header">@{Html.RenderAction("Menu", "Global");}</div>
    <div id="sideBar">
      @RenderSection("SubMenu")
    </div>
    <div id="container">@RenderBody()</div>
    <div id="footer">@{Html.RenderAction("Footer", "Global");}</div>
</body>

添加一个About.cshtml,使用_Layout.cshtml做母版页

然后就可以在About.cshtml中定义"SubMenu"要呈现的内容

@{
    ViewBag.Title = "About";
 }
 @section SubMenu{
    Hello This is a section implement in About View.
 }

这里我在About.cshtml中实现了SubMenu,运行结果

但是当如果使用了_Layout.cshtml做母版页的页没有实现Section的话,

譬如我新建的Index.cshtml没有实现@section SubMenu{...},就会抛出异常

这是因为我在_Layout.cshtml中使用的是@RenderSection("SubMenu")他要求所有子页都要实现,

可以使用它的另外一个重载@RenderSection("SubMenu",false),第二个参数代表它不是必须的,就不会抛出异常。

还有,当我在母版页中定义了@RenderSection("SubMenu",false)的时候,我希望当所有子页都没有实现这个Section

的时候,母版页可以有自己的呈现内容,就可以用

<div id="sideBar">
       @if (IsSectionDefined("SubMenu"))
        {
            @RenderSection("SubMenu", false)
        }
        else
        {
            <p>SubMenu Section is not defined!</p>
        }
 </div>

这样当没有任何页面呈现Section的时候,就会默认显示定义的内容。

-----------------------------------------------------------------------------------

还有一种比较灵活的方法,通过扩展方法来实现

public static class Utility
    {
        public static HelperResult RenderSection(this WebPageBase page, string sectionName, Func<object, HelperResult> defaultContent)
        {
            if (page.IsSectionDefined(sectionName))
            {
                return page.RenderSection(sectionName);
            }
            else
            {
                return defaultContent(null);

            }
        }
    }

在母版页中

@this.RenderSection("SubMenu", @<div>default section content</div>)

OK了!没有呈现Section时,就默认显示

<div>default section content</div>

.

时间: 2024-10-25 23:26:48

MVC4 Razor @RenderSection - 母版页设置的相关文章

MVC Razor @RenderSection -母版设置

Mvc4的Razor视图引擎还提供了@RenderSection 我的理解:@RenderSection在母版页中占个位,然后让使用此母版页的子页自己去呈现他们的Section. 在母版页_Layout.cshtml中定义@RenderSection("Section名") <body>    <div id="header">@{Html.RenderAction("Menu", "Global");

asp.net mvc4 razor视图 (之) 继承,集成

隐藏了具体实现. 放在views/shared/_layout.cshtm 即为所有其他页面的父模板(template / masterpage) 页面继承(inherit/extend):页面继承通过@Html.RenderBody()/@Html.RenderSection('your_sec').继承方法如下: 页面集成(include):页面要加载其他控件(usercontrol/part),可调用 @Html.RenderPatial("your_partial_tempalte.cs

asp.net mvc4 razor视图 (之) 数据读取

@Html.Raw 或者直接访问,使用 Model属性. 参考这里:http://techo.luefher.com/coding/dot-net/mvc/how-to-access-your-model-data-in-net-mvc-with-razor-engine-for-beginners/ lambda表达式,类似这样: 数据从controller到view,因此如果要初始化,也是在controller里面进行,如下: asp.net mvc4 razor视图 (之) 数据读取

asp.net mvc4 razor视图 (之) 添加 所见即所得 富文本编辑框

原文地址:http://www.dotnetfunda.com/articles/show/2657/implementing-richtexteditor-or-wysiwyg-tinymce-in-aspnet-mvc 总结下: 通过"管理Nuget程序包"功能添加tinymce到专案. 然后对于需要变成wysiwyg的输入框添加属性,AllowHtml和UIHint即可,如下: [AllowHtml] [UIHint("tinymce_full_compressed&q

MVC3 Razor @RenderSection

Mvc3的Razor视图引擎还提供了@RenderSection 我的理解:@RenderSection在母版页中占个位,然后让使用此母版页的子页自己去呈现他们的Section. 在母版页_Layout.cshtml中定义@RenderSection("Section名") <body>    <div id="header">@{Html.RenderAction("Menu", "Global");

ASP.NET MVC4 Razor

2014-09-18 14:06 by 易code, 2854 阅读, 0 评论, 收藏, 编辑 1 Code Expressions  代码表达式 @表达式  or  @(Expressions ) 例如1: <h1>Listing @stuff.Length items.</h1 Razor peeks at the next character and sees an angle bracket, which isn’t a valid identifier and transit

.NET MVC4 Razor视图预编译

在平时使用.NET MVC中会不会有这样子的需求:某些razor视图,特别是系统后台的视图,不想让用户自行更改或者是觉得razor执行效率不高,需要能够把razor预编译到dll文件中去提高执行效率!(道听途说,具体没测...) VS并不提供razor的预编译,如果需要对razor预编译需要借助第三方工具 SO,Let's Begin! 这里以VS2013为例 依次选择:工具---扩展和更新---左侧选择“联机”---搜索“RazorGenerator”,然后安装 2,对MVC项目中的Razor

[转载].NET MVC4 Razor 视图预编译

平时使用.NET MVC中不乏有类似的需求:某些razor视图,特别是系统后台的视图,不想让用户自行更改,需要通过某种方法把视图模板编译到项目的dll中去. 但是VS并不提供razor的预编译,如果需要对razor预编译需要借助第三方工具:Razor Generator 这里以VS2013为例 1,依次选择:工具---扩展和更新---左侧选择“联机”---搜索“RazorGenerator”,然后安装 2,对MVC项目中的Razor视图右键--属性--生成操作“无”,自定义工具“razorgen

ASP.NET MVC4(Razor)从客户端中检测到有潜在危险的 Request.Form 值

说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止. 该值可能指示存在危及应用程序安全的尝试,如跨站点脚本攻击.若要允许页面重写应用程序请求验证设置,请将 httpRuntime 配置节中的 requestValidationMode 特性设置为 requestValidationMode="2.0".示例: <httpRuntime requestValidationMode="2.0" />.设置此值后,可通过在 Page 指令