https://www.cnblogs.com/dansediao/p/5882024.html
今天Home視圖中新增了一個視圖,因爲不需要設置Layout就沒與管他,但是運行起來一看,自動引用了佈局,分析了半天 也沒看出是哪的錯誤?
後來嘗試着在area中增加了一個同樣的視圖就沒有問題,比較這兩個文件夾後發現,Home所在的views文件夾下多了一個_viewstart.cshtml,
打開一看,裏面就只有一句代碼,如下:
@{ Layout = "~/Views/Shared/_Layout.cshtml"; }
好吧,瞬間明白了!
從網上查了查,瞭解到這個_viewstart.cshtml是在呈現view時運行的,可以理解爲,在加載view之前先運行這個,這個裏面設置了layout,所以我的頁面中就引用了佈局。
問題找到了,解決辦法也很簡單,在我新增的頁面中設置layout=null,如下
@{ Layout = null; }
Test.cshtml 代碼
_TestLayout.cshtml
顯示結果:
多出了上面紅色劃線的部分
該部分的內容來自 _viewStart.cshtml
把該文件名稱修改爲 _ViewStart1.cshtml
顯示結果:
原因:
如上面的分析:
(自動加載?)
瞭解到這個_viewstart.cshtml是在呈現view時運行的,可以理解爲,在加載view之前先運行這個,這個裏面設置了layout,所以我的頁面中就引用了佈局。
個人感覺奇怪的地方:
頁面中引用了 _TestLayout.cshtml
但並沒有引用 _ViewStart.cshtml
按照前面作者的介紹 ,在ViewStart 中引用了 Layout.cshtml
頁面在加載 Views之前 會自動 加載 ViewStart 所以會出現這個結果。
把viewStart 改爲 ViewStart1 後,頁面的自動加載則不能生效。