MVC页面布局的理解

来源:互联网 发布:xboxone网络问题 编辑:程序博客网 时间:2024/06/06 09:43

1、MVC页面在加载的时候,如果在页面中有声明,比如:

@{
    Layout = "/Views/Shared/_Layout1.cshtml";
}
那么页面首先加载的就是_Layout1.cshtml页,
如果没有声明,那么加载的就是全局_Layout.cshtml页(原因是_ViewStart.cshtml中指定了)
@{
    Layout = "/Views/Shared/_Layout.cshtml";
}
2、_Layout.cshtml中分为三个节:
(1)@RenderSection("header", false)
false:说明这个节可有可无
功能:展示子页实现部分内容
(2)@RenderBody()
功能:展示子页主体部分
功能:展示子页实现部分内容
(3)@RenderSection("footer", false)
false:说明这个节可有可无
功能:展示子页实现部分内容
3、将公用的js和css的引用放置到这个_Layout.cshtml页中
比如:每个页面都会用到的juery.js,public.css等
4.子页的实现方法:
@section header{} :用于实现_Layout.cshtml中的@RenderSection("header", false) 节点

@section footer{}:用于实现_Layout.cshtml中的@RenderSection("footer", false) 节点
子页中的其他部分就是用于实现用于实现_Layout.cshtml中的@RenderBody() 节点

5.页面加载的步骤:

(1)首先加载_Layout.cshtml页面中@RenderSection("header", false)节点上面的部分

(2)然后加载子页面中@RenderSection("header", false)的内容

(3)然后加载_Layout.cshtml页面中@RenderSection("header", false)@RenderBody()节点之间的内容

(4)然后加载子页面中@RenderBody()的内容

(5)然后加载@RenderBody() 和@RenderSection("footer", false)之间的内容

(6)然后加载子页面中@RenderSection("footer", false)节点的内容

6.经验总结:

根据以上关于MVC页面加载顺序,可以总结出以下几点:

(1)页面渲染的部分尽量放在前面,即放在_Layout.cshtml的@RenderBody()节点的前面,以及子页面中的

@section header{} 区域。
(2)js脚本等需要页面加载完成之后才引用的文件,如果是公共的js,则放在_Layout.cshtml的@RenderSection("footer", false)节点的前面,如果是子页面中引用的js,则放在子页面的section footer{}区域中
(3)为了给客户更好的体验,遵循先渲染出页面,再引用js文件实现功能的原则
0 0