Добавление класса в Html.MenuItem's - PullRequest
0 голосов
/ 05 января 2012

У меня есть HTML-список пунктов меню, сгенерированных MVC 2.

<%= Html.MenuItem("Home", "Home", "Index")%>
<%= Html.MenuItem("Login", "Login", "Account")%>

, которые генерируют в HTML:

<li>
  <a href="Index">Home</a>
</li>

<li>
  <a href="Account">Login</a>
</li>

Как добавить класс CSS вэлемент в списке для каждого элемента в списке?

1 Ответ

3 голосов
/ 05 января 2012

Я предполагаю, что этот MenuItem - это метод расширения, который вы написали или который вы взяли у кого-то, я также предполагаю, что они используют метод ActionLink, как в:

public static string MenuItem(this HtmlHelper helper, string linkText, string actionName, string controllerName)
{
    string currentControllerName = (string)helper.ViewContext.RouteData.Values["controller"];
    string currentActionName = (string)helper.ViewContext.RouteData.Values["action"];

    // Add selected class
    if (currentControllerName.Equals(controllerName, StringComparison.CurrentCultureIgnoreCase) && currentActionName.Equals(actionName, StringComparison.CurrentCultureIgnoreCase))
        return string.Concat("<li class=\"selected\">", helper.ActionLink(linkText, actionName, controllerName), "</li>");

    // Add link
    return string.Concat("<li>", helper.ActionLink(linkText, actionName, controllerName), "</li>");
}

если это так, просто сделайте так, чтобы в качестве параметра использовался класс css, и используйте ActionLink, который принимает htmlattributes, например:

public static string MenuItem(this HtmlHelper helper, string linkText, string actionName, string controllerName, string cssClass = "menu-item")
{
    string currentControllerName = (string)helper.ViewContext.RouteData.Values["controller"];
    string currentActionName = (string)helper.ViewContext.RouteData.Values["action"];

    // Add selected class
    if (currentControllerName.Equals(controllerName, StringComparison.CurrentCultureIgnoreCase) && currentActionName.Equals(actionName, StringComparison.CurrentCultureIgnoreCase))
        return string.Concat("<li class=\"selected\">", helper.ActionLink(linkText, actionName, controllerName), "</li>");

    // Add link
    return string.Concat("<li>", helper.ActionLink(linkText, actionName, controllerName, new {@class = cssClass} ), "</li>");
}

тогда вы просто называете их так:

<%= Html.MenuItem("Home", "Home", "Index", "index-tem")%>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...