写在开始
在上一篇文章中,简单介绍了什么是TagHelper,怎么使用它。接下来我会简单介绍一下微软随着A https://www.wendangku.net/doc/ef7485059.html,5一起发布的TagHelpers。它们分别是:
1.AnchorTagHelper
2.CacheT agHelper
3.EnvironmentTagHelper
4.InputTagHelper
https://www.wendangku.net/doc/ef7485059.html,belTagHelper
6.SelectTagHelper
7.OptionTagHelper
8.TextAreaTagHelper
9.ValidationMessageT agHelper
10.ValidationSummaryTagHelper
11.FormTagHelper
12.LinkTagHelper
13.ScriptTagHelper
AnchorTagHelper
这个TagHelper被应用在所有锚元素上,它拥有一下属性:
?asp-action
指定action方法名。
?asp-controller
指定controller名。
?asp-fragment
指定URL片段名。
?asp-host
指定访问的主机(host)名。
?asp-protocol
指定访问协议,比如http或者https。
?asp-route
指定路由名。
最终这个TagHelper会被解析成具有href属性的锚元素,这个href的内容就是基于以上这些属性的值生成的。
?
1Create New
CacheTagHelper
应用在cache元素上,使用IMemoryCache实例来缓存cache元素内容在当前进程的内存中。它支持下面的属性:
?vary-by
string类型,TagHelper将基于该值来缓存内容,该值会被用来生成cache key。
?vary-by-header
string类型,指定请求头(request header),只能指定单个头名(header name),TagHelper将基于该值来缓存内容,该值会被用来生成cache key。
?vary-by-query
string类型,指定请求参数,当有多个请求参数时,以逗号分隔。TagHelper将基于它来缓存内容,该值会被用来生成cache key。
?vary-by-route
string类型,指定路由数据参数,当有多个路由数据参数时,以逗号分隔。TagHelper将基于它来缓存内容,该值会被用来生成cache key。
?vary-by-cookie
string类型,指定cookies名,当有多个cookies时,以逗号分隔。TagHelper将基于这些cooki es名来缓存内容,该值会被用来生成cache key。
?vary-by-user
bool类型,指定是否为每个登陆的用户使用缓存,用户信息被用来生成cache key。
?expires-on
DateTime类型,指定缓存失效的时间。
?expires-after
TimeSpan类型,指定经过多少时间,缓存失效,这个时间是从加入缓存开始计时。
?expires-sliding
TimeSpan类型,指定缓存没被使用后经过多少时间失效。
?priority
enum类型,具有以下可能的值:
?CachePreservationPriority.Low
?CachePreservationPriority.Normal
?CachePreservationPriority.High
?CachePreservationPriority.NeverRemove
存储在IMemoryCache实例中的缓存受限于当前可用内存。如果当服务器将要内存溢出时,内存c ache就会清除缓存来释放内容。此时,我们可以用这个属性来指定当前缓存的优先级,这样内存在释放时就会考虑释放优先级低的缓存。
EnvironmentTagHelper
应用在environment元素上,根据不同的names的设置有条件的render不同的内容。它支持以下属性:
?names
指定环境名,当有多个时候以逗号分隔。这里判断的依据是,读取IHostingEnvironment的Envir onmentName的值,与environment元素中的names匹配,当匹配上的时候就render出里面的内容,否则移除该environment元素。
在很多情况下,我们想再开发环境使用一套配置信息,在生产环境又是另外一套,这时候就需要使用条件判断语句了,不过在新版的MVC中,使用EnvironmentTagHelper提供的Environment元素标签就可以了,示例如下:
?
1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5
在上述代码中,我们定于,如果是Development环境就使用本地的js文件,否则(Staging或Pr
oduction环境)就先加载cdn的文件。
InputTagHelper
这个TagHelper被应用在input元素上,与HtmlHelpers中的TextBoxForHTML一样,这个Ta gHelper会生成一个绑定到model中某个字段的Input元素。它支持一下属性:
?asp-for
?asp-format
asp-for用来指定绑定model哪个字段到TagHelper上,很多其他的TagHelpers也具有这个属性。
asp-format用来设置显示的Format,通常被用来给货币、日期和时间类型的值设置Format,比如,Birthday是model里的一个日期类型的字段。
?
1
注意:asp-for的类型ModelExpression是https://www.wendangku.net/doc/ef7485059.html, MVC6里面新定义的一个类,其构造函数带有一个字符类型的参数,用来指定Model中字段的名字。我们也可以把一个内嵌对象赋给asp-for,比如:
?
1
LabelTagHelper
与https://www.wendangku.net/doc/ef7485059.html,belFor功能一样,它只有一个属性asp-for,用来指定绑定Model里某个字段。它作用在label元素上。
?
1
SelectTagHelper
SelectTagHelper作用在Select元素上,支持asp-for和asp-items属性。
asp-for与我们上面介绍的一样,用来绑定model中某个字段。
asp-items,被用来指定Select元素的Option集合,它的值类型是IEnumerable。
?
1
如果要在Select中添加一个默认选择的项,我们可以这样做:
?
1 2 3
我们可以赋任何类型是IEnumerable的实例给asp-items,可能是某个变量或者某个实例的一个属性等。
比如:
?
1 2 3 4 5 6 7 8@{
SelectListItem[]items=
{
new SelectListItem(){Text="item1"},
new SelectListItem(){Text="item2"}
};
}
OptionTagHelper
应用在option元素上,和select元素一起使用,通常被用来读取option元素信息,而不改变元素内容。唯一可能修改的是在有的情况下,会根据父亲select元素将option的selected状态设成"select ed"。
?
1 2 3
TextAreaTagHelper
应用在textarea元素上,目前只支持唯一一个属性asp-for,
?
1 ValidationMessageTagHelper
与HtmlHelper中的ValidationMessageFor一样,这个TagHelper是用来显示验证失败信息。它应用在span元素上,而且只有唯一的一个属性asp-validation-for,被用来指定所验证的对象----Mod el中某个字段。
?
1 2
ValidationSummaryTagHelper
像HTMLHelper扩展的ValidationSummary一样,它是用来验证错误的汇总信息。它只支持一个属性asp-validation-summary,具有以下几种值:
?None
不显示任何验证信息
?ModelOnly
只显示Model错误信息,不包括属性错误信息
?All
显示所有信息
它应用在div元素上,
?
1
FormTagHelper
与HtmlHelper中的BeginForm一样,它用来生成一个form元素,它应用在form元素上,支持以下属性:
?asp-action
?asp-controller
?asp-anti-forgery
?
1