4

我想知道如何将 html 属性传递给@Html.ActionLink辅助函数

我想那样做

<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 回答