【发布时间】:2017-04-11 13:28:52
【问题描述】:
希望我能说清楚。我的 mvc 项目中有一个区域有两个共享布局 _Application.cshtml(适用于区域)_Layout.cshtml(适用于非区域)
报告和收藏夹适用于区域控制器。
角色和用户用于默认命名空间控制器。
<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 从来没有收到过 Area 路由,因为它没有被定义。
编辑:抱歉,我无法描述这个问题(即使与同事也是如此......)
区域“采购”:控制器:“主页”具有索引、报告和收藏夹三个视图。导航菜单 (_Applicaiton.cshtml) 仅适用于采购区
非区域:控制器“支持”有两个视图角色和用户。导航菜单 (_Layout.cshtml) 是通用的,包含导航到项目其他区域的链接
上面的操作链接位于索引视图中。如果我单击报告或收藏夹,它将导航到 ApplicationName/Procurement/Home/Reports 或 ApplicationName/Procurement/Home/Favourites
如果我单击角色或用户,它会将我导航到 ApplicationName/Support/Roles 或 ApplicationName/SupportUsers
由于我为角色和用户定义布局的方式,导航菜单默认返回到通用菜单,而不是显示特定于采购区域的菜单。
我正在寻找当我单击导航菜单的角色或用户时是否有可能停留在采购布局上并引用相同的支持控制器。我不想为我正在创建的每个区域创建角色和用户页面。
【问题讨论】:
标签: asp.net-mvc razor