• 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上,此唯一字符串会提示浏览器从服务器从新加载图片,而不是从浏览器缓存从新加载:

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

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

  • 相关阅读:
    shell script 学习笔记-----标准输出
    《TCP/IP详解 卷一》读书笔记-----TCP persist &Keeplive timer
    《TCP/IP详解 卷一》读书笔记-----TCP超时重传
    《TCP/IP详解 卷一》读书笔记-----TCP数据流
    《TCP/IP详解 卷一》读书笔记-----TCP连接建立
    《TCP/IP详解 卷一》读书笔记-----DNS
    《TCP/IP详解 卷一》读书笔记-----广播&多播&IGMP
    《TCP/IP详解 卷一》读书笔记-----UDP&IP 分片
    《TCP/IP详解 卷一》读书笔记-----动态路由协议
    《TCP/IP 详解 卷一》读书笔记-----IP静态 路由
  • 原文地址:https://www.cnblogs.com/dcy521/p/13552611.html
Copyright © 2020-2023  润新知