一、引言

_ViewStart.cshtml是在ASP.NET MVC 3.0及更高版本以后出现的,用Razor模板引擎新建项目后,Views目录下面会出现一个这样的文件:

打开_ViewStart.cshtml文件,里面只有一行代码:

这行代码表示使用Views文件夹下的Shared下面的_Layout.cshtml进行布局

二、作用

  1. _ViewStart.cshtml是一个在呈现View文件的时候的启动文件,会在所有View(.cshtml)被执行之前执行,主要用于一些不方便或不能再母版(_Layout.cshtml)中进行的统一操作。譬如你有很多个没有继承关系的母版或不使用母版的单页。
  2. 在_ViewStart.cshtml中,我们可以定义一些参数或做一些判断,定义过程、语法和普通的页面没有任何差别。
  3. 在View被呈现的时候才会调用_ViewStart.cshtml,如果一个View是按照PartialView的方式输出的,则不会触发_ViewStart.cshtml中的代码。
  4. 如果在Views的某个目录下(例如Home目录)也有一个同名的_ViewStart.cshtml文件,那么这个_ViewStart.cshtml也会被调用,但是最先被调用的还是最外面的_ViewStart.cshtml,然后才是Home目录下的_ViewStart.cshtml文件。

三、启动顺序

在Controller的Action方法上面添加断点调试,会发现_ViewStart.cshtml、Layout.cshtml、Index.cshtml三个视图页的执行顺序如下:

  1. _ViewStart.cshtml
  2. Index.cshtml
  3. Layout.cshtml

四、测试

在新建一个视图的时候,会让你选择是否使用布局页,如果选择了布局页,那么就默认会使用_ViewStart.cshtml里面指定的布局视图:

这样设置就表示使用_ViewStart.cshtml里面指定的Layout布局页。

修改一下新创建的视图页代码

@{
ViewBag.Title = "TestView";
} <h2>这是测试视图页</h2>

然后浏览新创建的视图页

可以看到:除了我们刚才在视图页代码里面添加的一行文字意外,还有其它布局,这就是因为使用了布局页。

这时如果不想在使用布局页,那么就需要修改Layout了,修改代码如下:

@{
ViewBag.Title = "TestView";
// 指定Layout为null则表示不在使用布局页
Layout = null;
} <h2>这是测试视图页</h2>

在浏览页面

这时就不会使用布局页了。

如果新建视图的时候,不勾选使用布局页,则也不会使用

生成的视图页代码

@{
// 这里自动设置Layout为null
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>TestViewWithNull</title>
</head>
<body>
<div>
不使用布局页
</div>
</body>
</html>

然后浏览新添加的视图

最新文章

  1. 修复VS,恢复初始状态
  2. iOS机器学习-TensorFlow
  3. 关于Android使TextView可以滚动的设置
  4. Android高手进阶:Adapter深入理解与优化
  5. Tomcat - DBCP 配置
  6. GridView Tab/Enter键插入新行
  7. C#中函数的功能和类型
  8. Java 容器 接口
  9. 011 Socket定义客户端
  10. C++模板参数类型(转载)
  11. [C][代码实例]整型数组二分排序
  12. Windows系统下PHP使用Redis
  13. 【文档】使用Sphinx + reST编写文档
  14. libvlc_new 调用产生段错误
  15. 挖财大牛讲 Springboot工作流程
  16. 机器学习中正则惩罚项L0/L1/L2范数详解
  17. [转载]mysql下载安装
  18. MySQL 忘记root密码怎么办
  19. 用Tensorflow实现多层神经网络
  20. selenium+jenkins网页自动化测试的构建

热门文章

  1. django查询中模糊的知识点,filter(blog=blog),filter(username=username).first()--这两者只需一招让你分清QuerySet对象,和用户字典对象
  2. CouchDB学习-介绍
  3. 在项目中在线使用Iconfont图标
  4. HtEditor使用总结
  5. iOS核心动画高级技巧-4
  6. CodeForces - 158C(模拟)
  7. [转]加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用
  8. 牛客集训 湖南省赛E题 Grid 动态开点线段树
  9. pycharm安装第三方包问题解决
  10. Flask 教程 第十二章:日期和时间