How to visually indicate current page in ASP.NET MVC?

后端 未结 5 610
闹比i
闹比i 2020-12-24 03:28

As a base for discussion. Create a standard ASP.NET MVC Web project.

It will contain two menu items in the master page:

5条回答
  •  无人及你
    2020-12-24 03:51

    If you are using T4MVC, you can use this:

            public static HtmlString MenuLink(
            this HtmlHelper helper,
            string text,
            IT4MVCActionResult action,
            object htmlAttributes = null)
        {
            var currentController = helper.ViewContext.RouteData.Values["controller"] as string ?? "home";
            var currentAction = helper.ViewContext.RouteData.Values["action"] as string ?? "index";
    
            var attributes = new RouteValueDictionary(htmlAttributes);
            var cssClass = (attributes.ContainsKey("class"))
                               ? attributes["class"] + " "
                               : string.Empty;
    
            string selectedClass;
            if(action.Controller.Equals(currentController, StringComparison.InvariantCultureIgnoreCase)
            {
                selectedClass = "selected-parent";
                if(action.Action.Equals(currentAction, StringComparison.InvariantCultureIgnoreCase))
                    selectedClass = "selected";
            }
            cssClass += selectedClass;
    
            attributes["class"] = cssClass;
    
            return helper.ActionLink(text, (ActionResult)action, attributes);
        }
    

提交回复
热议问题