zoukankan      html  css  js  c++  java
  • 爱上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>
        }

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

    回到 目录

  • 相关阅读:
    OpenCASCADE DataExchange DWG
    OpenCASCADE Conic to BSpline Curves-Circle
    OpenCASCADE Conic to BSpline Curves-Hyperbola
    Java中通过命令行启动jar包时指定编码
    VSCode来绘制流程图真是得心应手
    若依微服务版新建业务模块后提示找不到mapper的解决方法
    若依微服务版怎样实现不同业务模块下实体和mapper互相调用
    GitLab怎样实现新建仓库并允许开发者推送代码实现协同开发
    RuoYi-Process多模块activity工作流项目快速搭建
    若依微服务版手把手教你本地搭建环境并运行前后端项目
  • 原文地址:https://www.cnblogs.com/lori/p/3420911.html
Copyright © 2011-2022 走看看