自ASP.Net Core发布以来,Asp团队正在推动使用TagHelpers而不是HTML帮助者。
在控制器的脚手架视图中,ASP.Net Core使用TagHelpers创建添加,编辑页面,但如果您注意到索引页面,他们会使用旧的HTML帮助程序。
//Ex:
<th>
@Html.DisplayNameFor(model => model.Package)
</th>
理解ASP.net核心团队的议程是非常困惑的。有谁知道在ASP.net Core中这样做的正确方法是什么?我的猜测是@Html.DisplayNameFor(model => model.Package)
很快会被标记为已弃用。请解释一下?
答案 0 :(得分:3)
根据那个帖子,
https://github.com/aspnet/Mvc/issues/3003
似乎目前DisplayNameFor仍然存在,并且没有适用于您的解决方案的Tag Helper。
他们经常提到<label asp-for="blabla"></label>
,但这不一样。
答案 1 :(得分:3)
Tag Helpers是MVC中的一项新功能,可用于生成HTML。语法与HTML相同,但由服务器上的Razor处理。 Tag Helpers在很多方面都是Html Helper方法的替代语法,但是它们也提供了一些使用辅助方法很难或不可能完成的功能。
您可以找到一些比较:https://docs.asp.net/en/latest/mvc/views/tag-helpers/intro.html#tag-helpers-compared-to-html-helpers
您可以获取Tag Helpers的更多详细信息:https://dannyvanderkraan.wordpress.com/2016/04/19/asp-net-core-1-0-goodbye-html-helpers-and-hello-taghelpers/
答案 2 :(得分:3)
并非每个Html帮助程序都有一个等效的Tag帮助程序。例如,@Html.DisplayNameFor(m => m.Property)
或@Html.EditorForModel()
没有等效的标记助手。这是有道理的,因为@Html.DisplayNameFor(m => m.Property)
和@Html.EditorForModel()
并没有真正输出HTML标记。
因此,如果有等效的话,请使用Tag助手支持Html助手。否则,请使用Html助手。
我不认为@Html.DisplayNameFor(m => m.Property)
会被标记为已弃用(任何其他显示模板或编辑器模板也不会被标记为@Html.EditorForModel()
)。这些将继续在ASP.NET Core中使用。
此外,您可能对此线程感兴趣的TagHelper等效于Html.DisplayNameFor:https://github.com/aspnet/Mvc/issues/2387
答案 3 :(得分:2)
我认为标签助手是可行的方式,它更具可读性,更清晰,可用于创建更复杂的标签,模拟Web表单中的用户控件日
答案 4 :(得分:0)
以下代码可用于收集
@model IEnumerable<EmployeeViewModel>;
<table>
<tr>
<th><label asp-for="ToList().First().Id"></label></th>
<th><label asp-for="ToList().First().Name"></label></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.Id</td>
<td>>@item.Name</td>
</tr>
}
</table>