Razor的主版页面框架

摘要:
在razor里当主版页面被载入后,执行的过程也一样,在razor主版页面里也会定义出一些需要被填入的的内容(挖洞),然后让主要页面的内容填入。2,关于_Layout主版页面。

类似于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 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页面,因为执行顺序是不一样的。

免责声明:文章转载自《Razor的主版页面框架》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇union 中null值合并原理c++ 判断是否有Emoji表情下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

关于服务器并发量的简单计算

最简单的计算方式就是根据服务器带宽与页面的大小1.假设机房带宽为10Mbs,页面的大小为20KB同时并发量的理论值:10*1024/=64个请求/秒理论上1秒钟同时可以有64个请求访问页面。本考试系统,登陆的页面容量比较大,所有的js,css以及图片未优化前在400KB左右,我们就以400KB为基准,所有后面要用的文件是在首页一次性加载下来的。这一天的测评情...

zlog 使用手册

Zlog是一个纯C日志函数库,具有高可靠性、高性能、线程安全性、灵活性和清晰的概念。Syslog是一个系统级的轮子,但它的速度慢,功能单调。Zlog比log4c更高效、更实用、更安全,它是用c编写的。Zlog使用了C99兼容的vsnprintf。...

Ubuntu 18.04 安装微信(附企业微信)

Ubuntu软件市场也是有的,所以安全性不用担心开源地址:https://github.com/geeeeeeeeek/electronic-wechat下面介绍几种安装的方式:1.直接解压运行先选择你系统版本:解压一下:tar-zxvfxxx.tar.gz算了,还是简单为新手分析一下==》tar命令可以解包.tar和.tar.gz。为啥我的没有微信图标?...

安装pygame

在python3中安装pygame库。一段时间后,您可以看到安装成功,并且可以导入pygame...

node.js

而同样,Node也提供了child_process.fork来创建Node的子进程。请参考文章后的multi-node的性能测试,可以看到在多Node进程的情景下,响应请求的速度被大幅度提高。在文章的写作中,Node最新发布的0.5.10版本新增了cluster启动参数。参数的使用方式如下:nodeclusterserver.js启动Node的时候,在附加了...

MAC接普通外置键盘的修改键位的方法

我使用Mac已经一年多了,现在我每天都越来越喜欢它。所有使用过Mac的学生都知道,Mac键盘的最大特点是它比普通键盘更具有命令键位置。普通键盘没有命令键。当我连接键盘时,我发现胜利键到处都是命令键。非常发达,所以你拥有mac下所需的所有密钥。但最关键的问题之一是,它们的顺序与Mac下的顺序不同。这与mac的使用习惯不一致。百度之后,我发现键盘可以修改。...