ASP.NET Actionlink与glyphicon和不同字体的文本

时间:2014-10-03 06:05:03

标签: asp.net-mvc twitter-bootstrap razor glyphicons

我想要一个带@Html.ActionLink的按钮,但我需要在文本中添加我的应用程序字体。

使用此代码:

<span>
    @Html.ActionLink("  Create New", "Create", null, new { @class = "btn btn-warning glyphicon glyphicon-plus-sign" })
</span>

我得到了我的按钮,但创建新文字显示为glyphicon font-family。

将glyphicon类放在span中不会改变任何内容

11 个答案:

答案 0 :(得分:136)

您不应将glyphicon类添加到a-tag。

来自Bootstrap网站:

  

请勿与其他组件混用   图标类不能直接与其他组件组合。它们不应与同一元素上的其他类一起使用。而是添加嵌套的<span>并将图标类应用于<span>

     

仅适用于空元素   图标类只应用于不包含文本内容且没有子元素的元素。

换句话说,正确的HTML可以按照您想要的方式运行:<a href="#" class="btn btn-warning">test <span class="glyphicon glyphicon-plus-sign"></span></a>

这使得Html.ActionLink助手不合适。相反,你可以使用类似的东西:

<a href="@Url.Action("Action", "Controller")" class="btn btn-warning">
    link text 
    <span class="glyphicon glyphicon-plus-sign" aria-hidden="true"></span>
</a>

答案 1 :(得分:20)

这适用于MVC 5:

@Html.ActionLink(" ", "EditResources", "NicheSites", new { ViewBag.dbc, item.locale, ViewBag.domainId, domainName = ViewBag.domaiName }, new {@class= "glyphicon glyphicon-edit" })

第一个参数不能为空或为空,否则会打击。

答案 2 :(得分:9)

最好只写出HTML,而不是试着让它与HtmlHelper.ActionLink一起使用...

<span>
    <a href="@Url.Action("Create")" class="btn btn-warning">
        <span class="glyphicon glyphicon-plus-sign"></span>
        Create New
    </a>
</span>

答案 3 :(得分:5)

这是我的。灵感来自安德烈·伯里金

public static class BensHtmlHelpers
{
    public static MvcHtmlString IconLink(this HtmlHelper htmlHelper, string linkText, string actionName, object routeValues, String iconName, object htmlAttributes = null)
    {
        var linkMarkup = htmlHelper.ActionLink(linkText, actionName, routeValues, htmlAttributes).ToHtmlString();
        var iconMarkup = String.Format("<span class=\"{0}\" aria-hidden=\"true\"></span>", iconName);
        return new MvcHtmlString(linkMarkup.Insert(linkMarkup.IndexOf(@"</a>"), iconMarkup));
    }
}

答案 4 :(得分:2)

我应该采用@Url.Action代替@Html.ActionLink的方法,下面是示例代码:

<span>
<a href="@Url.Action("Create", new { @class = "btn btn-warning" })"><span class="glyphicon glyphicon-plus-sign"></span> Create New</a>
</span>

答案 5 :(得分:2)

您可以使用简单的扩展程序:

private static readonly String SPAN_FORMAT = "<span class=\"{0}\" aria-hidden=\"true\"></span>";
private static readonly String A_END = "</a>";
public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName, object routeValues, String iconName, object htmlAttributes = null)
{
    var linkMarkup = htmlHelper.ActionLink(linkText, actionName, routeValues, htmlAttributes).ToHtmlString();
    if (!linkMarkup.EndsWith(A_END))
        throw new ArgumentException();

    var iconMarkup = String.Format(SPAN_FORMAT, iconName);
    return new MvcHtmlString(linkMarkup.Insert(linkMarkup.Length - A_END.Length, iconMarkup));
}

用法:

Html.ActionLink(" ", "DeleteChart", new { Id = _.Id }, "glyphicon glyphicon-trash")

答案 6 :(得分:2)

试试吧!

@Html.ActionLink(" Cerrar sesión", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" , @class = "glyphicon glyphicon-log-in" })

答案 7 :(得分:0)

我们来试试吧。让我知道它是否有效。谢谢

<style>
   span.super a
  {
      font: (your application font) !important;
  }

</style>

<span class="super">
    @Html.ActionLink("  Create New", "Create", null, new { @class = "btn btn-warning glyphicon glyphicon-plus-sign" })
</span>

答案 8 :(得分:0)

如何将Html.BeginForm与FormMethod.Get / FormMethod.Post一起使用

@using (Html.BeginForm("Action", "Controller", new { Area = "" },
FormMethod.Get, htmlAttributes: new { title = "SomeTitle" }))
{   
   <button type="submit" class="btn-link" role="menuitem">
   <i class="glyphicon glyphicon-plus-sign"></i>Create New</button>
}

答案 9 :(得分:0)

试试这个。为我工作。

<button class="btn btn-primary"><i class ="fa fa-plus">@Html.ActionLink(" ", "Create", "Home")</i></button>

答案 10 :(得分:-1)

试试这个。使用“htmlAttributes”

 @Html.ActionLink("  Create New", "Create", null, htmlAttributes: new { @class = "<your class>",@style="font:<your font>" })