单击登录或注册链接时如何使用活动类

时间:2016-06-11 12:53:42

标签: asp.net-mvc-4 twitter-bootstrap-3

我正在使用一个mvc 4应用程序,其中我使用了bootstrap类。现在我使用了一个html帮助程序类来检查是否单击了任何actionlink菜单,它将类设置为活动状态。

现在问题在于Navbar品牌链接以及登录和注册链接。

我不能使用相同的html帮助程序类,因为它使用了一些额外的属性,如下面的代码:

@Html.ActionLink("Application name", "Index", "Home", null, new { @class = "navbar-brand" })

<li>@Html.ActionLink("Register", "Register", "Account", routeValues: null, htmlAttributes: new { id = "registerLink" })</li>
<li>@Html.ActionLink("Log in", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" })</li>

上面的第一个链接是标题,默认情况下应该是活动的。

和其他一个是登录和注册,点击后应该是活动的。

1 个答案:

答案 0 :(得分:0)

我从互联网上得到了一些想法,首先我创建了一个@html帮助类,如下所示:

public static MvcHtmlString MenuLink(this HtmlHelper helper,string text, string action, string controller)
        {
            var routeData = helper.ViewContext.RouteData.Values;
            var currentController = routeData["controller"];
            var currentAction = routeData["action"];

            if (String.Equals(action, currentAction as string,
            StringComparison.OrdinalIgnoreCase)
            &&
            String.Equals(controller, currentController as string,
            StringComparison.OrdinalIgnoreCase))
            {
                return new MvcHtmlString("<li class=\"active\">" + helper.ActionLink(text, action, controller) + "</li>");
            }
            return new MvcHtmlString("<li>" + helper.ActionLink(text, action, controller) + "</li>");
        }

然后我在下面的菜单链接中调用了这个类:

  • @ Html.MenuLink(“主页”,“索引”,“主页”)
  • 因此,点击此链接后,它将设置为活动状态。 谢谢大家的帮助。