css – ASP.NET MVC – 基于控制器的样式列表项

前端之家收集整理的这篇文章主要介绍了css – ASP.NET MVC – 基于控制器的样式列表项前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的最终目标是有一个菜单,将一个类添加到与我当前页面关联的列表项.

所以我设置它使每个控制器与我菜单中的项目相关联.我需要在该列表项中添加一个类(更改颜色,背景等).

有一个简单的方法吗?将值传递给View,然后是什么?

解决方法

在我最近的一个项目中,我使用 HtmlHelper扩展并从ViewContext.RouteData.Values集合中获取数据.

所以建立一个像这样的简单扩展:

public static string OnClass(this HtmlHelper html,bool isOn)
{
    if (isOn)
        return " class=\"on\"";

    return string.Empty;
}

您可以构建任意数量的组合,例如

只测试当前的操作:

public static string OnClass(this HtmlHelper html,string action)
{
    string currentAction = html.ViewContext.RouteData.Values["action"].ToString();

    return html.OnClass(currentAction.ToLower() == action.ToLower());
}

测试一系列动作:

public static string OnClass(this HtmlHelper html,string[] actions)
{
    string currentAction = html.ViewContext.RouteData.Values["action"].ToString();

    foreach (string action in actions)
    {
        if (currentAction.ToLower() == action.ToLower())
            return html.OnClass(true);
    }

    return string.Empty;
}

测试动作和控制器:

public static string OnClass(this HtmlHelper html,string action,string controller)
{
    string currentController = html.ViewContext.RouteData.Values["controller"].ToString();

    if (currentController.ToLower() == controller.ToLower())
        return html.OnClass(action);

    return string.Empty;
}

等等

然后你只需在你的视图中调用

<ul id="left-menu">
    <!-- simple boolean -->
    <li <%= Html.OnClass(something == somethingElse) %>>Blah</li>
    <!-- action -->
    <li <%= Html.OnClass("Index") %>>Blah</li>
    <!-- any number of actions -->
    <li <%= Html.OnClass(new string[] { "Index","Details","View" }) %>>Blah</li>
    <!-- action and controller -->
    <li <%= Html.OnClass("Index","Home") %>>Blah</li>
</ul>

HtmlHelper扩展程序是你的朋友!

猜你在找的CSS相关文章