我想知道如何将html属性传递给@Html.ActionLink
辅助函数
我想这样做
<a class="accordion-toggle" data-toggle="collapse" data-parent="#leftMenu" href="/Admin/UserManagment">
<i class="icon-user"></i>User Managment
</a>
如何传递italic html属性
答案 0 :(得分: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>
修改强>
出于兴趣,我做了一些研究,发现了this answer。这解释了为此目的无法使用Html.ActionLink
:
Html.ActionLink帮助程序HTML对阻止的链接文本进行编码 您可以在链接文本中嵌入HTML。
答案 1 :(得分:2)
无法使用@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)