如何在asp.net核心中taghelper

  介绍

这篇文章给大家介绍如何在asp.net核心中taghelper,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强>创建自定义html元素

创建一个类ButtonTagHelper

tagName为标签名称,下面创建一个按钮标签

using  Microsoft.AspNetCore.Razor.TagHelpers;   namespace  Ctrl.Core.Tag.Controls.Button   {   [HtmlTargetElement才能(“test-button")]   public 才能;class  ButtonTagHelper: TagHelper   {才能   ,,,public  override  void 过程(TagHelperContext 上下文,TagHelperOutput 输出)   ,,,{   ,,,,,output.TagName =,“button";   ,,,,,base.Process(上下文,输出);   ,,,}   ,,}   }

<>强注册taghelper

创建完后可没法执行使用哦,在。cshtml通过某个标签比如形式标签输入asp、下面立刻就出现了一个列表asp - ....,这些是怎么做到的呢?因为在_ViewImports在我们创建项目工程时,已经提前引入了taghelper默认引入的是微软已经为我们写好的taghelper类库Microsoft.AspNetCore.Mvc.TagHelpers;

我们自定义的话也需要按照这个方式引入自定义的taghelper、下面我自己创建了一个类库名字为“Ctrl.Core.Tag",我这个类库下面要存放所有的taghelper我直接引入命名空间

<代码> @addTagHelper *, Ctrl.Core。代码标记

如果想引入特定的taghelper如下

<代码> @addTagHelper你的taghelper,命名空间

然后我们测试一下是否可用了,先生成一下项目,然后找个cshtml视图,输入刚才的前缀测试会出来刚才定义的标签

添加上并运行项目查看刚才创建的按钮标签是否存在

<强>添加自定义属性

上面需求是满足不了我们日常需求的,下面我们再定义一个元素属性

, output.Attributes.SetAttribute (“class",,“btn  btn-primary");

然后再打开页面看效果就会看到类元素已经给加上了。

 using  Microsoft.AspNetCore.Razor.TagHelpers;
  namespace  Ctrl.Core.Tag.Controls.Button
  {
  [HtmlTargetElement才能(“test-button")]
  public 才能;class  ButtonTagHelper: TagHelper
  {才能
  ,,,public  override  void 过程(TagHelperContext 上下文,TagHelperOutput 输出)
  ,,,{
  ,,,,,output.TagName =,“button";
  ,,,,,output.Attributes.SetAttribute (“class",,“btn  btn-primary");
  ,,,,,base.Process(上下文,输出);
  ,,,}
  ,,}
  }

<>强通过vs感知匹配按钮类型

上面能满足我们自定义标签了,但是可能使用起来有局限性、下面我给大家提供一个场景思路,后面大家可以自己进行扩展。

我创建一个枚举类为CtrlButtonType

namespace  Ctrl.Core.Tag.Controls.Button   {///才能,& lt; summary>   ,,///,,,按钮类型///才能,& lt;/summary>   public 才能;enum  CtrlButtonType   {才能   ,,,///,& lt; summary>   ,,,///,默认样式   ,,,///,& lt;/summary>   ,,,默认情况下,   ,,,///,& lt; summary>   ,,,///,,,首选项   ,,,///,& lt;/summary>   ,,,,   ,,,///,& lt; summary>   ,,,///,,,成功   ,,,///,& lt;/summary>   成功,,,,   ,,,///,& lt; summary>   ,,,///,一般信息   ,,,///,& lt;/summary>   ,,,信息,   ,,,///,& lt; summary>   ,,,///,警告   ,,,///,& lt;/summary>   ,,,警告,   ,,,///,& lt; summary>   ,,,///,危险   ,,,///,& lt;/summary>   ,,,的危险   ,,}   }

在buttonTagHelper类中增加一个属性

public  CtrlButtonType  ButtonType {组,得到,,,}

到cshtml中添加刚才那个页面的属性,会发现有提示,以及可以看到刚才枚举中定义的。这样通过vs感知以及通过类型指定我们刚才按钮的类型是不是很方面了。

 namespace  Ctrl.Core.Tag.Controls.Button
  {
  [HtmlTargetElement才能(“test-button")]
  public 才能;class  ButtonTagHelper: TagHelper
  {才能
  ,,,public  CtrlButtonType  ButtonType {组,得到,,,}
  ,,,public  override  void 过程(TagHelperContext 上下文,TagHelperOutput 输出)
  ,,,{
  ,,,,,output.TagName =,“button";
  ,,,,,output.Attributes.SetAttribute (“class",,“btn  btn产生绯闻;+ ButtonType.ToString () .ToLower ());
  ,,,,,base.Process(上下文,输出);
  ,,,}
  ,,}
  }
& lt; test-button 按钮式=癝uccess"祝辞& lt;/test-button>

如何在asp.net核心中taghelper