ASP.Net Core -- 为什么要使用TagHelper?

TagHelper使服务器端代码可以参与在Razor文件中创建和呈现HTML元素,是asp.net core中内置的标签助手,实用性和维护性特别强。

今天只总结一下:为什么要使用taghelper?如下:

1:通过映射关系匹配路由

比如,平时写一个a标签,跳转到某一个控制器下,我们这样写:

<a href="/Home/Index">返回到列表页</a>

而使用TagHelper后可以这样写:

<a asp-action="Index" asp-controller="Home">返回到列表页</a>

这样写都能实现同样的功能,跳转到Home控制器下的Index方法里。其实还有好多种方法也可实现,但是为什么要使用TagHelper呢?

因为使用原始的那种写法是属于硬编码的形式,而使用TagHelper里的属性标签是通过映射关系生成的,假如路由配置修改了,比如原先的是这样:

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

突然有一天把路由配置给改了:

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "api/{controller=Home}/{action=Index}/{id?}");
});

这个时候,如果使用的原始硬编码形式,就需要对整个项目里的跳转链接进行修改,而如果使用TagHelper属性标签的话,就不需要了,它会动态加载和匹配路由。

2:模型验证提示信息

一般项目中,提交表单需要验证,验证用户输入的信息是否合格,是否正确,这个时候使用TagHelper里的属性标签非常友好,不需要写什么逻辑代码,如下:

<form method="post">
    <div>
        <label asp-for="FirstName"></label>
        <input asp-for="FirstName" />
        <span asp-validation-for="FirstName"></span>
    </div>
    <div>
        <label asp-for="LastName"></label>
        <input asp-for="LastName" />
        <span asp-validation-for="LastName"></span>
    </div>
    <div>
        <label asp-for="BirthDate"></label>
        <input asp-for="BirthDate" type="date" />
        <span asp-validation-for="BirthDate"></span>
    </div>
    <div>
        <label asp-for="Gender"></label>
        <select asp-for="Gender" asp-items="Html.GetEnumSelectList<Gender>()">
        </select>
        <span asp-validation-for="Gender"></span>
    </div>
    <input type="submit" value="save" />
</form>

在模型类中:

public class StudentCreateViewModel
    {
        [Display(Name = "姓"),Required]
        public string FirstName { get; set; }
        [Display(Name = "名"),Required,MaxLength(10)]
        public string LastName { get; set; }
        [Display(Name = "出生日期"), Required]
        public DateTime BirthDate { get; set; }
        [Display(Name = "性别")]
        public Gender Gender { get; set; }
    }

使用TagHelper属性标签后:

 

 就会自动提示了。

3:对图片标签增强

有些时候,我们修改文件夹里的图片名称,但是在浏览器查看后图片还是原先的图片,一般做法可以强制刷新,或者清除浏览器缓存

使用TagHelper里一个属性标签,就可以轻松解决该问题:

<img src="" class="card-img-top" asp-append-version="true"/>

这样Img TagHelper就会对Img标签进行增强,为静态图像文件提供“缓存破坏行为”,生产唯一的散列值,并将其附加到图片的URL上,此唯一字符串会提示浏览器从服务器从新加载图片,而不是从浏览器缓存从新加载:

只有当磁盘上的文件修改时,将会重新计算生成的哈希值,缓存才会失效。

优点还有好多好多,暂时总结三点常用的吧!

原文地址:https://www.cnblogs.com/dcy521/p/13552611.html