ASP.NET MVC教程八:_ViewStart.cshtml


一、引言

_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>

 然后瀏覽新添加的視圖

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM