ASP.NET MVC教程八:_ViewStart.cshtml

1、引言

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

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

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

2、做用

  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文件。

3、启动顺序

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

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

4、测试

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

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

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

@{
    ViewBag.Title = "TestView";
}

<h2>这是测试视图页</h2>

 而后浏览新建立的视图页blog

能够看到:除了咱们刚才在视图页代码里面添加的一行文字意外,还有其它布局,这就是由于使用了布局页。继承

这时若是不想在使用布局页,那么就须要修改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>

 而后浏览新添加的视图

相关文章
相关标签/搜索