希望我能讓自己清楚。我在我的mvc項目中有兩個共享佈局區域 _Application.cshtml(對於區域)_Layout.cshtml(對於非區域)MVC區域和共享佈局
報告和收藏夾是區域控制器。
角色和用戶用於默認命名空間控制器。
<li>@Html.ActionLink("Reports", "Reports", "Home")</li>
<li>@Html.ActionLink("Favourites", "Favourites", "Home")</li>
<li>@Html.ActionLink("System Roles", "Roles", "Support",new { Area = "" }, htmlAttributes: new { title = "System Roles" }) </li>
<li>@Html.ActionLink("Users", "Users", "Support", new { Area = "" }, htmlAttributes: new { title = "Users" })</li>
在角色和用戶視圖中定義我正在定義不同的共享佈局。這沒有鏈接到報告和收藏夾(只是完全不同的導航菜單)。
是否可以將角色和用戶的佈局分配給我的_Application共享佈局,而不會失去從默認命名空間控制器調用操作的能力?
if (this.ViewContext.RouteData.DataTokens["Area"] != null) {
Layout = "~/Views/Shared/_Application.cshtml";
}
else
{
Layout = "~/Views/Shared/_Layout.cshtml";
}
我試過這個,但DataToken永遠不會收到區域路由,因爲它沒有定義。
編輯:對不起我有描述了這個問題(甚至與同事太...)
區「採購」的麻煩:控制器:「家」有三個視圖索引,報告和收藏夾。導航菜單(_Applicaiton.cshtml)僅適用於採購區域
非區域:控制器「支持」具有兩個視圖角色和用戶。導航菜單(_Layout.cshtml)是通用的,包含導航到項目的其他區域的鏈接
上述操作鏈接駐留在索引視圖中。如果我點擊報告或收藏夾,它會將我導航到ApplicationName/Procurement/Home/Reports或ApplicationName/Procurement/Home/Favorites
如果我單擊角色或用戶,它將導航到ApplicationName/Support/Roles或ApplicationName /支持用戶
由於我已經爲角色和用戶定義了佈局,所以導航菜單默認回到通用窗口,而不是顯示特定於採購區域的佈局。
我在查看是否有可能在單擊導航菜單的角色或用戶時留在採購佈局上並引用相同的支持控制器。我不想爲我創建的每個區域創建角色和用戶頁面。
你對「區域」小寫是正確的。不過,我認爲這種方法不適合我。我沒有在我的ActionLink中定義區域,因爲那些是我的默認命名空間控制器中的操作,所以密鑰永遠不會被設置... – foop
本質上,我試圖在各個區域中重用角色和用戶視圖和操作項目。不過,我希望給用戶不要爲那些重複使用的視圖和操作留下特定區域的體驗。 – foop
'_Application.cshtml'是否繼承自_Layout.cshtml'? –