網站首頁 編程語言 正文
一、引言
_ViewStart.cshtml是在ASP.NET MVC 3.0及更高版本以后出現的,用Razor模板引擎新建項目后,Views目錄下面會出現一個這樣的文件:
打開_ViewStart.cshtml文件,里面只有一行代碼:
這行代碼表示使用Views文件夾下的Shared下面的_Layout.cshtml進行布局
二、作用
- _ViewStart.cshtml是一個在呈現View文件的時候的啟動文件,會在所有View(.cshtml)被執行之前執行,主要用于一些不方便或不能再母版(_Layout.cshtml)中進行的統一操作。譬如你有很多個沒有繼承關系的母版或不使用母版的單頁。
- 在_ViewStart.cshtml中,我們可以定義一些參數或做一些判斷,定義過程、語法和普通的頁面沒有任何差別。
- 在View被呈現的時候才會調用_ViewStart.cshtml,如果一個View是按照PartialView的方式輸出的,則不會觸發_ViewStart.cshtml中的代碼。
- 如果在Views的某個目錄下(例如Home目錄)也有一個同名的_ViewStart.cshtml文件,那么這個_ViewStart.cshtml也會被調用,但是最先被調用的還是最外面的_ViewStart.cshtml,然后才是Home目錄下的_ViewStart.cshtml文件。
三、啟動順序
在Controller的Action方法上面添加斷點調試,會發現_ViewStart.cshtml、Layout.cshtml、Index.cshtml三個視圖頁的執行順序如下:
- _ViewStart.cshtml
- Index.cshtml
- Layout.cshtml
四、測試
在新建一個視圖的時候,會讓你選擇是否使用布局頁,如果選擇了布局頁,那么就默認會使用_ViewStart.cshtml里面指定的布局視圖:
這樣設置就表示使用_ViewStart.cshtml里面指定的Layout布局頁。
修改一下新創建的視圖頁代碼
@{ ViewBag.Title = "TestView"; }這是測試視圖頁
然后瀏覽新創建的視圖頁
可以看到:除了我們剛才在視圖頁代碼里面添加的一行文字意外,還有其它布局,這就是因為使用了布局頁。
這時如果不想在使用布局頁,那么就需要修改Layout了,修改代碼如下:
@{ ViewBag.Title = "TestView"; // 指定Layout為null則表示不在使用布局頁 Layout = null; }這是測試視圖頁
在瀏覽頁面
這時就不會使用布局頁了。
如果新建視圖的時候,不勾選使用布局頁,則也不會使用
生成的視圖頁代碼
@{ // 這里自動設置Layout為null Layout = null; }TestViewWithNull 不使用布局頁
然后瀏覽新添加的視圖
原文鏈接:https://www.cnblogs.com/dotnet261010/p/11427931.html
相關推薦
- 2022-05-18 python中leastsq函數的使用方法_python
- 2022-05-27 Python?time三種時間轉換小結_python
- 2023-07-09 .Net下驗證MongoDB 的 Linq 模式聯合查詢是否可用
- 2022-06-20 C語言手把手帶你掌握帶頭雙向循環鏈表_C 語言
- 2022-12-30 antd之RangePicker設置默認值方式_React
- 2022-06-06 基于VSTS的Xamarin.Android持續集成步驟詳解_Android
- 2022-08-07 QT利用QProcess獲取計算機硬件信息_C 語言
- 2022-03-14 -bash: 未預期的符號 `(‘ 附近有語法錯誤的解決辦法
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支