zoukankan      html  css  js  c++  java
  • Razor的主版页面框架

    类似于2.0版本中的MasterPage主版页面框架,不过mvc3.0推出的RazorView内建的主版页面语法与原本的webFormview的MasterPage相差甚远

     
    1,Razor的页面执行顺序
    当controller 回传ViewResult给MvcHandler(用mh代替)之后,mh会先设法找到对应的检视页面view,当找到了对应的razor页面之后,会进入页面执行生命周期,在Razor页面的执行过程中有个固定的执行顺序。
    被mh找到的razor页面会优先执行,执行完毕后,会检查这个view页面是否含有主版页面所需要的Layout属性,如果有的话便试图载入Layout属性指定的Razor主版页面,找到主版页面后悔开始将内容响应给用户端,
     
    在过去的MasterPage中,执行的时候会先找到ContentPlaceHolder控制项,并将之前主要页面的执行结果填入后输出到用户端eg<标签asp: ContentPlaceHolder ID="MainContent" runat="server"/>
     
    实务上:在沟通的时候会把MasterPage定义为一个区块的动作戏称为“挖洞”,也就是在MasterPage里挖了一个洞,然后由主要页面的内容填入。
    在razor里当主版页面被载入后,执行的过程也一样,在razor主版页面里也会定义出一些需要被填入的的内容(挖洞),然后让主要页面的内容填入。
     
     
    2,关于_Layout主版页面。
    预设的Views/Shared/_Layout.cshtml文件其实和一般的razor检视页面差不多,同样是razor语法,但不同的地方是有两个Razor语法,分别是@RenderBody,@RenderSection这两段声明,就是所谓的挖洞宣言
    @RenderBody()在主版页面中可视为“预设挖洞”,也就是主要的View页面在没有特别声明的情况下,所有内容都会被填入到@RenderBody()这个位置。
    @RenderSection在Razor主版页面中被视为“具名坑洞”,
    @RenderSection(“featured”,required:false)意思就是我们在主版页面中定义一个叫featured的坑洞,第二个是required具名参数则是声明这个坑洞是否必须被填满,如果在主版页面设定的具名坑洞把required参数设定为true的话,那么所有载入这个主版页面的view页面都必须输出想对应的内容,否则就会发生状况。
     
    注意:由于razor页面有其执行顺序,主要是先执行view再执行Layout主版页面,因为view与layout共用一个viewDataDictionary实体,因此,如果要将数据传递到layout页面中一样可以通过viewData或者viewBag的方式传递过去,但是千万别以为可以从layout传数据回view页面,因为执行顺序是不一样的。
  • 相关阅读:
    关于使用sudo找不到环境变量的问题
    HDFS修改副本数,并生效。
    Linux创建用户,SFTP只允许访问指定目录
    Docker 技术系列之安装Redis单机版和集群版
    Docker 技术系列之安装多版本Mysql5.6和Mysql5.7
    Docker 技术系列之安装Docker Desktop for Mac
    第五章 Mac系统软件-安装Java Web开发环境基本软件
    第四章 感受Mac之美-效率提高从操作快捷键开始
    第三章 感受Mac之美-万里挑一的装机必备软件
    第二章 感受Mac 之美-惊艳从Mac 外设开始,一周后的使用感受
  • 原文地址:https://www.cnblogs.com/jinhaoObject/p/4597672.html
Copyright © 2011-2022 走看看