Tag Helpers如何与Helper类不同?

时间:2015-04-24 06:03:52

标签: asp.net-core-mvc

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

为什么我们应该使用先前版本提供的Helper类的标记助手?

3 个答案:

答案 0 :(得分:4)

Tag Helpers的推出有几个原因。 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" />

您甚至可以自己编写。

我不打算深入讨论,但您可以创建服务器端扩展小部件,甚至可以匹配您的客户端框架以用于搜索引擎优化目的。这是一个相当不错的tutorial for making tag helpers

答案 1 :(得分:0)

恕我直言,最重要的原因是它使你的标记更清洁;看起来不像服务器端代码,更像是HTML5。

答案 2 :(得分:0)

许多开发人员认为Tag Helpers与HTML Helpers类似。从某种意义上说,很多HTML帮助器具有与之等效的Tag Helper,但是在某些方面有所不同。

  1. 标签助手附加到Razor视图中的HTML元素,它们帮助我们编写更简洁,更易于阅读的标记。另一方面,HTML Helper作为Razor Views中的方法被调用。
  2. 标记助手提供了HTML友好的开发体验。使用标记助手的Razor标记通常看起来像标准HTML。熟悉HTML / CSS / JavaScript的前端设计人员可以在不学习C#或Razor语法的情况下编辑Razor。 HTML助手没有提供HTML友好的开发经验。前端设计师需要学习C#和Razor语法才能使用HTML Helpers。
  3. Visual Studio为标记助手提供了丰富的情报支持。与普通的HTML元素(例如h1,img等)相比,Visual Studio还为Tag Helpers提供了不同的颜色。在编写HTML Helpers时,Visual Studio不能提供良好的IntelliSense支持,因为在大多数情况下,您传递给HTML Helper的参数或设置是简单的字符串。

希望我回答了你的问题。如果您还想了解Tag Helpers and View Components和学习how to use built-in ASP.NET Core Tag Helpers之间的区别,可以阅读我的Developer Guide to Tag Helpers