我在_ViewStart.cshtml中爲我的大部分網站使用共享佈局文件。沿線的東西:我可以防止用於錯誤消息的共享佈局嗎?
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
在我的大部分網站和錯誤報告頁面之間幾乎沒有信息共享。我如何區分這兩種情況?
我想爲所有頁面加載共享佈局,除了任何錯誤報告。
我在_ViewStart.cshtml中爲我的大部分網站使用共享佈局文件。沿線的東西:我可以防止用於錯誤消息的共享佈局嗎?
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
在我的大部分網站和錯誤報告頁面之間幾乎沒有信息共享。我如何區分這兩種情況?
我想爲所有頁面加載共享佈局,除了任何錯誤報告。
你可以在每頁/視圖基礎
@{
var model = ViewContext.Controller.ViewData.Model;
if (model is System.Web.Mvc.HandleErrorInfo) {
Layout = "";
} else {
Layout = "~/Views/Shared/_Layout.cshtml";
}
}
這是從我的Post.vbhtml頁面更改佈局 - 我只需要改變佈局頁面使用不同的佈局。
完成後,此問題有一個流行,有時不正確的解決方案提供下面。謹慎選擇,如果不確定,請使用已接受的答案。
有微妙和有時重要差異的接受的答案及以下的流行的選擇之間。下面的替代方案導致的結果看起來是正確的大部分時間,但並不總是工作。這似乎是由於加載順序和視圖文件的執行所致 - 最頂端的共享視圖首先被加載並執行。如果第一次加載+執行進程有副作用,該解決方案將以奇怪和重要的方式破解。
_ ViewStart.cshtml
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
指導適當的視圖不使用佈局,通過加入以下的視圖文件的頂部:
ErrorView.cshtml
@{
Layout = "";
}
我剛試過 - 我改變了佈局指令在我的post.vbhtml頁面的頂部,它使用了不同的佈局頁面。 – 2011-12-18 22:08:22
該選項提供了*看起來正確,但*表現不正確的解決方案。我特別要求避免加載共享視圖。在某些時候不顯示它作爲最終結果可能會有用,但是對於我的用例而言,微妙(並且非常重要)的方式失敗了。 – blueberryfields 2011-12-18 22:28:01