使用Html.ActionLink()和ASP属性(例如<a asp-action="">

时间:2018-11-05 17:43:37

标签: asp.net razor

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!

1 个答案:

答案 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")

恕我直言,标记助手方法对设计人员更友好且可读性