在新版的MVC6中,微软提供了强大的TagHelper功能,以便让我们摆脱如下的臃肿代码:
@Html.LabelFor(model => model.FullName) @Html.EditFor(model => model.FullName) @Html.ValidationMessageFor(model => model.FullName)
引入新功能TagHelper以后,我们只需要这样定义就可以了,代码如下:
@addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers" /* 这里需要首先引用TagHelper所在的命名空间 */ <label asp-for="FullName"></label> <div> <input asp-for="FullName" /> <span asp-validation-for="FullName"></span> </div>
这种方式,抛去了服务器端代码,利用自定义html属性显得更加有语义,前端人员开起来也很舒服,极大地提高了前端开发人员的效率。
在默认的TagHelper实现里,不同的元素支持不同的自定义属性,以实现不同的用途,例如大部分元素都支持asp-for,而a元素则支持asp-controller和asp-action等,input元素最强大的,支持各种类型的type以及相关的格式。详细实现,请参考如下章节中的表格内容。
A元素
属性 描述asp-controller Controller的名称
asp-action Action的名称
asp-host 网站的Host
asp-fragment URL的fragment名称
asp-protocol 网站协议(http或https)
asp-route Route名称
asp-route-
href 默认属性,如果href有值,则其它属性都不能设置任何值。
Form元素
属性 描述asp-controller Controller的名称
asp-action Action的名称
asp-anti-forgery
asp-route-
action 默认属性,如果action有值,则其它属性都不能设置任何值。
Input元素
属性 描述asp-for 模型字段的名称
asp-format 设置Type格式,具体如下:
格式 标准类型
HiddenInput hidden
Password password
Text text
PhoneNumber tel
Url url
EmailAddress email
Date date
DateTime datetime
DateTime-local datetime-local
Time time
Byte/SByte/Int16/UInt16/Int32/UInt32/Int64/UInt64/Single/Double number
Boolean checkbox
Decimal text
String text
IFormFile file
IEnumerable`IFormFile file
其中关于时间的具体格式如下:
属性 描述date {0:yyyy-MM-dd}
datetime {0:yyyy-MM-ddTHH:mm:ss.fffK}
datetime-local {0:yyyy-MM-ddTHH:mm:ss.fff}
time {0:HH:mm:ss.fff}
Label元素
属性 描述asp-for 模型字段的名称
textarea元素
属性 描述asp-for 模型字段的名称
span元素
属性 描述asp-validation-for 模型字段的名称
div元素
属性 描述asp-validation-aummary ValidationSummary枚举值:
ValidationSummary.All
ValidationSummary.ModelOnly
ValidationSummary.None。
验证描述类型,只有选择了ValidationSummary.All和ValidationSummary.ModelOnly才能渲染该div元素。
select元素
属性 描述asp-for 模型字段名称
asp-items 模型字段名称