4

@Html.ActionLinkhtml属性をヘルパー関数に渡す方法が知りたい

私はそのようにしたい

<a class="accordion-toggle" data-toggle="collapse" data-parent="#leftMenu" href="/Admin/UserManagment">
                    <i class="icon-user"></i>User Managment
                </a>

その斜体のhtml属性を渡す方法

4

2 に答える 2

6

@Url.Action()代替として使用できます。

この場合、コードは次のようになります。

<a class="accordion-toggle" data-toggle="collapse" data-parent="#leftMenu" 
    href="@Url.Action("UserManagment", "Admin")">
        <i class="icon-user"></i>User Managment
</a>

編集:

興味を持って、私は少し調査を行い、この答えを見つけました。Html.ActionLinkこれは、この目的でを使用できないことを説明しています:

Html.ActionLink ヘルパー HTML はリンク テキストをエンコードするため、リンク テキストに HTML を埋め込むことはできません。

于 2013-11-05T12:13:33.273 に答える
2

を使用してアンカータグ内にhtmlコードをラップする方法はありません@Html.ActionLink

使用できます@Url.Action

<a href="@Url.Action("UserManagment", "Admin")" ...>
    <i class="icon-user"></i>User Managment
</a>

または、拡張メソッドを作成します。

public static IHtmlString MyActionLink(this HtmlHelper helper,
                                            string value, 
                                            Dictionary<string, string> attributes,
                                            string innerHtml)
{
    var aBuilder = new TagBuilder("a");
    foreach (var attr in attributes)
    {
        aBuilder.MergeAttribute(attr.Key, attr.Value);
    }
    aBuilder.InnerHtml += innerHtml + value;

    return new HtmlString(aBuilder.ToString(TagRenderMode.Normal));
}

そして、このようにあなたのビューでそれを使用してください

@{
    var attributes = new Dictionary<string, string>
        {
          { "data-toggle", "collapse" },
          { "data-parent", "#leftMenu" },
          { "href", Url.Action("UserManagement", "Admin") }
        };
    var innerHtml = "<i class='icon-user'></i>";
}

@Html.MyActionLink("User Managment", attributes, innerHtml)
于 2013-11-05T12:56:22.310 に答える