从css类向所有@ Html.ActionLink添加样式

时间:2014-10-10 13:24:52

标签: html css asp.net-mvc razor

我知道我可以使用一个类添加到@ Html.Actionlink,它一次作用于单个 Actionlink:

@Html.ActionLink("Add", 
                 "UpdateNote", 
                 "Notes", 
                 new { id = 0, type = (int)THOS.Utilities.Enumerations.Enumerations.Note.RelatedApplicationType.Law, appid = ((ObjectModelLibrary.Law)ViewData["currentLaw"]).LawID, baseappid = ((ObjectModelLibrary.Law)ViewData["currentLaw"]).LawID }
                 new { @class = "btn btn-primary icon-edit"},
                 null)

然而,


有没有一种定义类的方法(就像在css文件中为所有div添加样式一样:

div{
color: red;
}

^ ^
| |
this way will act on *all* divs

而不是

 <div class="myClass"></div>

我可以写:

<div></div>

会自动包含color:red


是否有办法为ActionLink定义一个类,而无需访问每个actionlink并输入@Class="myClass"


例如


为所有按钮实例添加样式:

input[type="button"]{

background-color:red;
}

我可以这样做:

input[type="actionlink"]{

//styles for all actionlinks in project
}

所以所有的动作链接都可以写成:

@ Html.ActionLink( “行动”, “控制器”)

并自动包含我的css文件中所述的样式?


我会以第一种方式做到这一点,但我已经做过100次而没有定义一个类,并且不喜欢复制和粘贴:

class="myClass" 

1 个答案:

答案 0 :(得分:0)

ActionLink只生成普通锚点,因此您可以编写:

a{
   color:red;
}

但要获得ActionLinks,您需要通过类或容器调用它们。

也可能更好的方法是创建自定义ActionLink并在其中放置一个默认类,并使用此类可以执行选择器,这样您就可以使用这个新的自定义ActionLink而无需复制粘贴类

public static class LinkExtensions
{
    public static MvcHtmlString MyActionLink(
        this HtmlHelper htmlHelper, 
        string linkText, 
        string action, 
        string controller
    )
    {
        var currentAction = htmlHelper.ViewContext.RouteData.GetRequiredString("action");
        var currentController = htmlHelper.ViewContext.RouteData.GetRequiredString("controller");
        if (action == currentAction && controller == currentController)
        {
            var anchor = new TagBuilder("a");
            anchor.Attributes["href"] = "#";
            anchor.AddCssClass("currentPageCSS");
            anchor.SetInnerText(linkText);
            return MvcHtmlString.Create(anchor.ToString());
        }
        return htmlHelper.ActionLink(linkText, action, controller);
    }
}

%= Html.MyActionLink("hello foo", "Index", "Home") %>
<%= Html.MyActionLink("hello bar", "About", "Home") %>

https://stackoverflow.com/a/5084672/20126

复制的代码