我想知道如何将 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属性
我想知道如何将 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属性
您可以@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 嵌入链接文本中。
无法使用将 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)