爱上MVC3~布局页的继承与扩展

简介:

在MVC3中引入了Razor引擎,这对于代码的表现力上是个突破,同时母板页也变成了_Layout,所以,我们就习惯上称它为布局页面,在razor里,布局页面是可以继承的,即,一个上下公用的布局页面(不用登陆的,产品展示页等),可以被上下左右公用的布局页面(需要登陆后看到的,如用户中心)继承。当然继承之后,父布局页里的一切,在子布局页里都是可见的,这对于使用面向对象的开发者来说,非常容易接受。

我们来看一下图示:

这是主布局页:

 

这是子布局页,它继承了主布局页面的内容:

 

总结:布局页可以通过layout去继承另一个布局页的内容。

下面再来看一下布局页的扩展,事实上是对布局页上元素的扩展,我们以section元素为例,来说明一下。

主布局代码:

<head>
    <title>@ViewBag.Title</title>
    @RenderSection("Meta",false)
    <script src="../../Scripts/JS/jquery.js"></script>
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
    @RenderSection("Head", false)<!-- 主母板页中的JS片断 -->
</head>

子布局,用户中心代码:

@section Meta{
    @RenderSection("Meta", false)
    <!-- 继承主母板的Meta,并扩展自己的Meta节点-->
}
@section Head{
    <link href="../../Scripts/JQTree/themes/default/style.css" rel="stylesheet" type="text/css" />
    <link href="../../Content/model.css" rel="stylesheet" />
    <script src="../../Scripts/JQTree/jquery.jstree.js"></script>
    <script src="../../Scripts/My97DatePicker4.7/WdatePicker.js" type="text/javascript"></script>
    <script src="../../Scripts/xheditor/xheditor-zh-cn.min.js" type="text/javascript"></script>
    @RenderSection("Head", false)
}

而真正的页面,也可以有自己的逻辑,去实现Meta和Head块,Meta块用来放置SEO信息,而Head块来放置CSS和JS代码。

@section Meta{
    <meta name="keywords" content="权限管理 后台管理系统" />
    <meta name="description" content="权限管理 后台管理系统" />
    @section Head{
        <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
        <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
    }

总结:布局页的一切元素还可以进行扩展,即在主布局页定义了元素,在子布局页还可以重新定义它,而在真的页面,看到的就是两个布局页的内容,这就是布局页的扩展。

本文转自博客园张占岭(仓储大叔)的博客,原文链接:爱上MVC3~布局页的继承与扩展,如需转载请自行联系原博主。

目录
相关文章
|
3月前
|
前端开发 Java 开发者
Spring MVC:构建高效、可维护、可扩展的Web应用程序
Spring MVC:构建高效、可维护、可扩展的Web应用程序
27 0
|
9天前
|
前端开发 Java 应用服务中间件
Springboot对MVC、tomcat扩展配置
Springboot对MVC、tomcat扩展配置
|
11月前
|
SQL JSON 前端开发
基于Springboot外卖系统08:员工账号状态管理功能+对象转换器+扩展Spring mvc的消息转换器
在员工管理列表页面,可以对某个员工账号进行启用或者禁用操作。账号禁用的员工不能登录系统,启用后的员工可以正常登录。如果某个员工账号状态为正常,则按钮显示为 "禁用",如果员工账号状态为已禁用,则按钮显示为"启用"。
117 0
|
12月前
|
XML 前端开发 Java
一波带走,教你Spring Boot如何扩展、接管Spring MVC?
一波带走,教你Spring Boot如何扩展、接管Spring MVC?
|
前端开发 .NET
一起谈.NET技术,ASP.NET MVC 2扩展点之Model Binder
  Model Binder在Asp.net MVC中非常简单。简单的说就是你控制器中的Action方法需要参数数据;而这些参数数据包含在HTTP请求中,包括表单上的Value和URL中的参数等。而ModelBinder的功能就是将这些个表单上的Value和URL中的参数换成对象,然后将这些对象绑定到Action的参数上面。
1029 0
|
Web App开发 前端开发 .NET
一起谈.NET技术,13个不可不知的ASP.NET MVC扩展点
ASP.NET MVC设计的主要原则之一是可扩展性。处理管线(processing pipeline)上的所有(或大多数)东西都是可替换的。因此,如果您不喜欢ASP.NET MVC所使用的约定(或缺乏某些约定),您可以创建自己的服务来支持您的约定,并将其注入到主管线中。
1077 0