In ASP.NET Razor views, I have seen links created in two different ways:
@Html.ActionLink("Download", "Download", new { id = item.Id })
and
<a asp-area="" asp-controller="MyController" asp-action="Download" asp-route-id="@item.Id">Download</a>
Does one method have advantages over the other? The @Html.ActionLink()
syntax seems more compact, but perhaps doesn't allow for as much control over the final <a/>
tag? Thanks!
答案 0 :(得分:3)
第一个是MVC4和5中存在的HTML帮助器方法。第二个是出现在asp.net核心中的称为Tag帮助器。它看起来更像是纯HTML语法,因此,即使对C#不太熟悉的UI设计人员也可以使用它们来创建链接。
链接标记帮助程序可以执行ActionLink
帮助程序可以执行的所有操作,甚至还可以执行更多操作。例如,使用链接标签帮助器,您可以创建这样的HTML标记。
<a asp-action="Search" asp-controller="Home">
<i class="glyphicon glyphicon-search"></i>
</a>
您无法生成上述类型的标记(使用ActionLink
帮助程序在定位标记中的其他元素标记。
请记住,您可以在asp.net核心视图中使用HTML帮助器方法。但是从HTML的角度来看,标记帮助程序更易于阅读。
比较代码以标记帮助器方法呈现SELECT元素
<select asp-for="UserId" asp-items="@Model.UserList">
<option>Select one</select>
</select>
vs
@Html.DropDownListFor(a=>a.UserId, Model.UserList,"select one")
恕我直言,标记助手方法对设计人员更友好且可读性