如何在ajax.actionlink中插入fontawesome图标

时间:2016-09-01 17:11:09

标签: ajax asp.net-mvc razor

是否可以将图标标记添加到ajax.actionlink?

    @Ajax.ActionLink("Subscribe", "Subscribe", "UserManagement", new { id = ViewBag.UserId }, 
    new AjaxOptions 
    { 
        UpdateTargetId = "video-userinfo-subscribe", 
        HttpMethod = "POST", 
        InsertionMode = InsertionMode.Replace
    }, new { id = "video-userinfo-subscribe" })     

4 个答案:

答案 0 :(得分:3)

简短的回答,你不能,或者至少,它是不可取的。正如您在@ Shyju的回答中所详述的那样,将一个类应用于a标签会产生意想不到的副作用。 Font Awesome旨在应用于空内联元素,即:

<i class="fa fa-foo"></i>

答案较长的答案是不使用Html.ActionLinkAjax.ActionLink。它只是您需要简单链接时的快捷方式,简单就是关键字。只要您想要添加图标等操作,您就会离开该区域。而是做类似的事情:

<a id="video-userinfo-subscribe" href="@Url.Action("Subscribe", "UserManagement", new { id = ViewBag.UserId })">
    <i class="fa fa-foo"></i>
    Subscribe
</a>

但是,你的AJAX怎么样?好吧,这又是另一个原因,还有很多理由不使用Ajax.*助手系列。他们愚蠢地不灵活和脆弱。使用自己的JavaScript比依赖Web Form时代的保留更好。

$('#video-userinfo-subscribe').on('click', function (e) {
    e.preventDefault();
    var url = $(this).attr('href');
    $.post(url, function (html) {
        $('#video-userinfo-subscribe').replaceWith(html);
    });
});

但要小心这种事情。您正在替换您要绑定的相同元素,因此您应该:

  1. 绑定到委托(即a标记的父级):

    $('#parentElement').on('click', '#video-userinfo-subscribe', function (e) {
    
  2. 替换其他元素或仅替换a标记的内容:

    $('#video-userinfo-subscribe').html(html);
    

答案 1 :(得分:1)

是的,这可能是一招。试试这样:

    <p-column *ngFor="let col of getColumns()" [field]="col.name" [header]="col.header" [sortable]="true">
      <ng-template let-data="rowData" pTemplate="body">
        {{format(data,col)}}
      </ng-template>
    </p-column>

只是,替换你自己的变量。

答案 2 :(得分:1)

我知道这一定很老,但这可能对其他人有帮助

 <div class="col-2 text-center">
        <a data-ajax="true"
    data-ajax-loading="#loading"
    data-ajax-mode="replace"
    data-ajax-update="#editBid"
    href="/Bids/_EditBid/?bidId=@Model.BidId"
    class="btn btn-sample"><i class="fas fa-edit fa-lg"></i></a>

答案 3 :(得分:0)

我喜欢Erik VzGz的回答。它简单易行。但是,我不得不将其更改为基于类而不是id,因为我想在每行都有链接的表中使用它。

@Ajax.ActionLink("YourText", "YourAction", "YourController", null, new AjaxOptions { HttpMethod = "GET", InsertionMode = InsertionMode.Replace, UpdateTargetId = "YourDivTargetToUpdate" }, new { @class = "btn btn-success myActionLink" })

<script>
  $('.myActionLink').prepend("<i class='fa fa-plus'></i> ");
</script>

此外,如果您不想在按钮上输入任何文本,请将“ YourText”更改为“”。您必须至少有一个字符,否则会出错。