Asp.net-Mvc

強制所有區域使用相同的佈局

  • November 7, 2012

我有以下項目結構:

  • /視圖/共享/_佈局;
  • /Areas/Area1/Views/ControllerName/Index;

  • /區域/區域/視圖/控制器名稱/索引。

有沒有辦法強制所有區域使用**_Layout作為基本佈局**?

有沒有辦法在不添加**_ViewStart**文件的情況下做到這一點(例如,通過路由配置)?

也可以看看:

如何在 ASP.NET MVC 3 razor ViewStart 文件中指定不同的佈局?

您只需添加一個名為:

_ViewStart.cshtml

在每個區域視圖文件夾下:

/Areas/Area1/Views/_ViewStart.cshtml

並編輯文件以指向根佈局,如下所示:

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

為了使其工作,您不必在視圖的佈局屬性中指定值,如果這樣做,您將覆蓋全域佈局

注意:正如 Tony 提到的,您可以編輯每個視圖的佈局屬性以指向根佈局,但這不是推薦的方法,因為您會將視圖與佈局耦合併更改它會很痛苦

編輯 1

如果您想使用程式碼設置預設視圖的佈局,也許您應該考慮編寫自定義視圖引擎。

嘗試Google關於自定義RazorViewEngineRazorView

這篇文章可能是一個很好的起點

<http://weblogs.asp.net/imranbaloch/archive/2011/06/27/view-engine-with-dynamic-view-location.aspx>

我沒有做過這樣的事情,但我希望我能指出你正確的方向

引用自:https://stackoverflow.com/questions/13277126