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>

 而後瀏覽新添加的視圖

相關文章
相關標籤/搜索