类
public class MenuItem
{
public MenuItem(string area, string controller, string action,string name)
{
this.area = area;
this.controller = controller;
this.action = action;
this.name = name;
}
public string area { get; set; }
public string controller { get; set; }
public string action { get; set; }
public string name { get; set; }
}
~Layout.cshtml
@Html.Action("_Menu", "User") //loading partial page
Controller
[ChildActionOnly]
public ActionResult _Menu()
{
List<MenuItem> obj = new List<MenuItem>();
obj.Add(new MenuItem("Master", "User", "ViewProfile", "Profile"));
obj.Add(new MenuItem("Master", "User", "StepI", "Upload Abstract"));
obj.Add(new MenuItem("Master", "User", "ChangePass", "Change Password"));
obj.Add(new MenuItem("", "home", "login", "Log Out"));
return PartialView(obj);
}
_Menu.cshtml
@model IEnumerable<Conference_Project.Areas.Master.Models.MenuItem>
@foreach (var item in Model)
{
<ul class="nav nav-pills nav-stacked">
<li role="presentation" class="@(ViewContext.RouteData.Values["Action"].ToString().ToLower() == item.action.ToLower() ? "active" : "")">@Html.ActionLink(item.name, item.action, item.controller)</li>
</ul>
}
how to show active tab using url in mvc4
................................................ .................................................... .....................................
最佳答案
您正在调用 ChildAction
生成部分(使用 @Html.Action()
)所以
ViewContext.RouteData.Values["Action"].ToString()
返回 "_Menu"
(不是主视图的 Action 名称)。更改您的代码以使用
ViewContext.ParentActionViewContext.RouteData.Values["Action"].ToString()
以便您获得父操作。
作为旁注,您应该生成一个 <ul>
元素,我建议比较忽略大小写的值。
@model IEnumerable<Conference_Project.Areas.Master.Models.MenuItem>
@{
string action = ViewContext.ParentActionViewContext.RouteData.Values["Action"].ToString().ToLower();
}
<ul class="nav nav-pills nav-stacked">
@foreach (var item in Model)
{
<li role="presentation" class="@(action == item.action.ToLower() ? "active" : "")">
@Html.ActionLink(item.name, item.action, item.controller)
</li>
}
</ul>
关于css - 如何在 mvc4 中使用 url 显示事件选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42667273/