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-
前缀。
可以更轻松地添加其他属性,例如 class
、placeholder
,甚至其他自定义属性。
我在我的项目中使用 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。
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-
前缀。
可以更轻松地添加其他属性,例如 class
、placeholder
,甚至其他自定义属性。
我在我的项目中使用 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。