zoukankan      html  css  js  c++  java
  • 在ASP.NET Core中使用TagHelpers

    TagHelpers使用

    _ViewImports.cshtml文件下添加

    @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

    使用表单

    <form asp-controller="Home" asp-action="Privacy" method="post">跳转到Home控制器下的Privacy</form>

    浏览器显示

    内置的TagHelpers

    https://docs.microsoft.com/zh-cn/aspnet/core/mvc/views/tag-helpers/built-in/anchor-tag-helper?view=aspnetcore-5.0 

    当然了你还可以结合Html标记语言使用

    添加类

    public class User
    {
           [Display(Name = "性别")]
           public Gender gender { get; set; }
    }
    
    public enum Gender
    {
        男 = 0,
        女 = 1
     }

    视图

    @model AspNetCoreTesting.Models.User

    <
    label asp-for="gender" class="col-sm-1"></label>
    <div class="col-lg-10">
    <select class="form-control" asp-for="gender" asp-items="Html.GetEnumSelectList<Gender>()">
    </
    select>
    </div>

    TagHelpers可能控件相对于HtmlHelpers有些不足,结合使用才是王道

    不知道HtmlHelpers方法怎么办?那就在视图中点出来呗!

     自定义TagHelpers

        [HtmlTargetElement("email")]//Email标签
        public class EmailTagHelper: TagHelper
        {
            [HtmlAttributeName("color")]
            public string myColor { get; set; }
            public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
            {
                output.TagName = "a";
                var content = await output.GetChildContentAsync();
                var target = content.GetContent();
                output.Attributes.SetAttribute("href", $"Mailto:{target}");
                output.Attributes.SetAttribute("style", $"color:{myColor}");
                output.Content.SetContent(target);
            }
        }

     在_ViewImports.cshtml引用项目名称

    @*自定义TagHelper,引用项目名称*@
    @addTagHelper *,AspNetCoreTesting

    使用

    <email>123456@qq.com</email>

    产生的html

     创建一个既可以当html元素又可以当属性标签的Bold

        [HtmlTargetElement(Attributes = "bold")]//Bold元素
        [HtmlTargetElement("bold")]//Bold标签(两者满足其一即可)
        public class BoldTagHelper: TagHelper
        {
            [HtmlAttributeName("my-style")]
            public MyStyle MyStyle { get; set; }
            public override void  Process(TagHelperContext context, TagHelperOutput output)
            {
                output.Attributes.RemoveAll("bold");
                output.PreContent.SetHtmlContent("<strong>");
                output.PostContent.SetHtmlContent("</strong>");
                
                output.Attributes.SetAttribute("style", $"color:{MyStyle.Color};font-size:{MyStyle.FontSize}px; font-family:{MyStyle.FontFamily}");
            }
        }
    
         public class MyStyle 
    {
    public string Color { get; set; } public int FontSize { get; set; } public string FontFamily { get; set; } }

    视图

    <bold my-style="@(new AspNetCoreTesting.Models.TagHelpersModels.MyStyle{  Color = "red", FontSize=36,  FontFamily="宋体"  })">红色字体</bold>
    
    <p bold my-style="@(new AspNetCoreTesting.Models.TagHelpersModels.MyStyle{  Color = "green", FontSize=25,  FontFamily="微软雅黑"  })">绿色字体</p>

    效果

     TagHelpers的前缀

    视图中使用

    @tagHelperPrefix "my:"

    必须在TagHelpers前面添加my:前缀,否则使其失效;添加my:前缀,有字体有加粗的效果。

  • 相关阅读:
    xss框架(一)之浏览器通信
    Joomla未授权创建特权用户漏洞和getshell脚本解析
    从零开始写网站登录爆破(一)
    CSRF学习整理
    vue中vue2-google-maps使用谷歌地图的基础操作
    vue中百度地图API的调用
    60秒定时减少
    git操作指令,以及常规git代码操作
    taro taroUi的H5打包后路径/修改为./
    vue enter事件无效,加入native
  • 原文地址:https://www.cnblogs.com/-zzc/p/14359889.html
Copyright © 2011-2022 走看看