css - 如何在 mvc4 中使用 url 显示事件选项卡

标签 css asp.net-mvc-4

 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>
 }

enter image description here

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/

相关文章:

asp.net-mvc - 使用自定义身份提供商进行 Dotnetopenauth 单点登录

azure - 如何使用 "InProc"sessionState 将 MVC4 应用程序转换为 Azure

jquery - 同步XMLHttpRequest..asp.net mvc

html - 让 child 占据与 parent 相同的高度和比例宽度

jquery - 阿拉伯斜体字体

html - 如何使主题按钮影响整个页面(HTML、CSS)

css - 悬停动画包含在父级中

javascript - JS/ react : How to truncate text with an icon instead of ellipsis?

html - MVC 形式 : align Actionlink and button next to each other on same vertical alignment

C#.NET MVC4 - 方法的不可为空类型的参数的空条目