MVC中的_viewstart.cshtml(沒有設置Layout卻引用了佈局)

https://www.cnblogs.com/dansediao/p/5882024.html

MVC中的_viewstart.cshtml(沒有設置Layout卻引用了佈局)

今天Home視圖中新增了一個視圖,因爲不需要設置Layout就沒與管他,但是運行起來一看,自動引用了佈局,分析了半天 也沒看出是哪的錯誤?

後來嘗試着在area中增加了一個同樣的視圖就沒有問題,比較這兩個文件夾後發現,Home所在的views文件夾下多了一個_viewstart.cshtml,

打開一看,裏面就只有一句代碼,如下:

    

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

好吧,瞬間明白了!

 

從網上查了查,瞭解到這個_viewstart.cshtml是在呈現view時運行的,可以理解爲,在加載view之前先運行這個,這個裏面設置了layout,所以我的頁面中就引用了佈局。

問題找到了,解決辦法也很簡單,在我新增的頁面中設置layout=null,如下

    

@{
    Layout = null;
}
1
0
posted @

Test.cshtml 代碼
在這裏插入圖片描述

_TestLayout.cshtml
在這裏插入圖片描述

顯示結果:
在這裏插入圖片描述

多出了上面紅色劃線的部分

該部分的內容來自 _viewStart.cshtml
在這裏插入圖片描述

把該文件名稱修改爲 _ViewStart1.cshtml
顯示結果:
在這裏插入圖片描述
原因:
如上面的分析:
(自動加載?)
瞭解到這個_viewstart.cshtml是在呈現view時運行的,可以理解爲,在加載view之前先運行這個,這個裏面設置了layout,所以我的頁面中就引用了佈局。

個人感覺奇怪的地方:
頁面中引用了 _TestLayout.cshtml
但並沒有引用 _ViewStart.cshtml

按照前面作者的介紹 ,在ViewStart 中引用了 Layout.cshtml
頁面在加載 Views之前 會自動 加載 ViewStart 所以會出現這個結果。

把viewStart 改爲 ViewStart1 後,頁面的自動加載則不能生效。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章