Tag Helper 与 Helper class 有何不同?

How do Tag Helpers differ from the Helper class?

ASP.Net MVC 6 引入了标签助手功能。

为什么我们应该使用标签助手而不是以前版本提供的助手class?

标签助手的引入有几个原因。 Scott Hanselman talks in length about them here. 然而,Tag Helpers 的要点包括:

前端开发人员无需具备 C# 知识即可编写它们。

下面的内容对于一个传统的前端开发者来说确实不是很直观

@Html.LabelFor(m => m.Title, new { @class = "control-label" })
@Html.TextBoxFor(m => m.Title, new { @class = "form-control" })

但是,使用标签助手会变得更加清晰:

<label asp-for="Title" class="control-label" />
<input asp-for="Title" class="form-control" />

请注意,我上次检查时它在不断变化,包括是否使用 asp- 前缀。

可以更轻松地添加其他属性,例如 classplaceholder,甚至其他自定义属性。

我在我的项目中使用 angular.js;为此,语法变得更加混乱:

@Html.TextBoxFor(m => m.Title, new { @class = "form-control", ng_model = "ctrl.title" })

现在就像添加属性一样简单,就像我们期望的那样:

<input asp-for="Title" class="form-control" ng-model="ctrl.title" />

您甚至可以自己编写。

我不打算在这里深入,但您可以创建服务器端扩展小部件,这些小部件甚至可以匹配您的客户端框架以用于 SEO 目的。有一个相当不错的 tutorial for making tag helpers.

恕我直言,主要原因是它使您的标记更清晰;看起来不太像服务器端代码,而更像 HTML5。