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

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

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

  • 相关阅读:
    input 标签取消readOnly属性
    python selenium 跑脚本的时候按钮无法点击的解决办法
    Python Selenium 调用IE浏览器失败Unexpected error launching Internet Explorer解决方法
    转载--Python random模块(获取随机数)常用方法和使用例子
    转载--python selenium实现文件、图片上传
    ieDriver启动IE浏览器显示This is the initial start page for the WebDriver server的解决办法
    自动化测试用例设计学习心得总结
    关于selene安装插件ide不能识别插件的问题解决办法
    cmd 启动mysql
    最大子序列
  • 原文地址:https://www.cnblogs.com/dcy521/p/13552611.html
Copyright © 2011-2022 走看看