进步,才是人应该有的现象。—— 雨果

  今天开始,我就来说说asp.net core的新特性,今天就说说TagHelper标签助手。虽然学习.net,最有帮助的就是microsoft的官方说明文档了,里面把一些使用说明都写的非常清楚,但奈何.net core放入文档微软还没来得及翻译,对于英文不好的人来说简直就是看的艰辛。所以今天就来学习学习这标签助手,和博客园大佬分享分享经验。

  想看Microsoft官方文档和Git项目的可以直接点击以下传送门~~

  asp.net core 官方文档

  asp.net core github项目

  说起TagHelper给我的印象,有点像asp.net form当中的服务器端控件,又有点像Angular或者Vue当中的“组件”的后端实现版本。用户可以将一组html标签集合转换为一个自定义标签,实现了html代码的复用。

  那么正文开始~~

  首先,我们需要安装一个vs2017插件:Razor Language Services。这个插件能在html中智能提示用户自定义的标签助手。

  https://marketplace.visualstudio.com/items?itemName=ms-madsk.RazorLanguageServices

  创建一个asp.net core项目

  

  使用微软定义的标签助手,在安装了插件后,使用标签助手的标签会进行高亮显示

  上图中environment、link、a标签均使用了标签助手实现各自的功能

<a asp-area="" asp-controller="Home" asp-action="Index" class="navbar-brand">taghelpersample</a>

  a标签中通过使用asp-controller,asp-action自定义属性来实现路由访问。

  这时有人会说,我也可以使用@Html类来实现相同功能,为什么需要使用TagHelper?

@Html.ActionLink("taghelpersample", "Index", "Home",null, new { Class = "navbar-brand" })

  确实,使用@Html帮助类我们能实现相同的功能,但是使用标签助手的方式不是更加符合html的标签语法吗,对于强迫症程序员简直就是福音~~。而且对于标签的原有属性的添加例如class,标签助手的使用也更加方便。

<!--标签助手版form--><form asp-controller="Home" asp-action="Index" class="form-horizontal" method="post"></form><!--Html帮助类版form-->@using (Html.BeginForm("Index", "Home", FormMethod.Post,, new { Class = "form-horizontal" }))
{}

  此外,标签助手的另外一个特色就是可以自定义,具体步骤如下:

  (1)创建派生自TagHelper类的Class

   //类会默认转换为<text-collection></text-collection>   public class TextCollectionTagHelper:TagHelper{         public override void Process(TagHelperContext context, TagHelperOutput output){             base.Process(context, output);}}

  (2)设置属性与基本类

public string Color { get; set; }        

public override void Process(TagHelperContext context, TagHelperOutput output){output.TagName = "div";output.Attributes.Add("style", "color:" + Color);                     var text = "Hello,World";                 var h1 = new TagBuilder("h1");                  var h2 = new TagBuilder("h2");               var h3 = new TagBuilder("h3");            var h4 = new TagBuilder("h4");            var h5 = new TagBuilder("h5");            var h6 = new TagBuilder("h6");h1.InnerHtml.Append(text);h2.InnerHtml.Append(text);h3.InnerHtml.Append(text);h4.InnerHtml.Append(text);h5.InnerHtml.Append(text);h6.InnerHtml.Append(text);output.Content.AppendHtml(h1);output.Content.AppendHtml(h2);output.Content.AppendHtml(h3);output.Content.AppendHtml(h4);output.Content.AppendHtml(h5);output.Content.AppendHtml(h6);}

  (3)在_ViewImports.cshtml导入类命名空间

@addTagHelper *,taghelpersample

  (4)在cshtml中使用标签助手

<text-collection color="red"></text-collection><text-collection color="blue"></text-collection><text-collection color="#666"></text-collection>

  (5)调试效果

OK,今天关于TagHelper就分享到这

原文地址:http://www.cnblogs.com/billming/p/7136047.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

asp.net core新特性(1):TagHelper相关推荐

  1. [翻译]ASP.NET MVC4新特性之脚本压缩和合并

    2019独角兽企业重金招聘Python工程师标准>>> [翻译]ASP.NET MVC4新特性之脚本压缩和合并 目前主流浏览器限制客户端对同一域名只能同时发起6(PS:原文如此)个H ...

  2. 我心中的ASP.NET Core 新核心对象WebHost(二)

    这是ASP.NET Core新核心对象系列的第二篇,上一篇 WebHost准备阶段 我们讲到了WebHostBuilder的初始化及配置.我们给WebHostBuilder进行以下配置 UseKest ...

  3. 我心中的ASP.NET Core 新核心对象WebHost(一)

    以本系列文章向Fish 前辈的那篇我心中的ASP.NET 核心对象致敬.(虽然不知道前辈现在在干什么).一晃就6年过去了,那首 郝云 的<回到那一天>怎么唱来着? 时光一晃,你就三十了. ...

  4. ASP.NET Core 新核心对象WebHost(一)

    以本系列文章向Fish 前辈的那篇我心中的ASP.NET 核心对象致敬.(虽然不知道前辈现在在干什么).一晃就6年过去了,那首 郝云 的<回到那一天>怎么唱来着? 时光一晃,你就三十了. ...

  5. asp.net core高级应用:TagHelper+Form

    上一篇博客<asp.net core新特性(1):TagHelper>我讲解了TagHelper的基本用法和自定义标签的生成,那么我就趁热打铁,和大家分享一下TagHelper的高级用法~ ...

  6. 推荐一本基于ASP.NET Core 3.1的实战来了

    第一本基于 ASP.NET Core 3.1 的实战书来了 我脱产花费了一年时间创作书籍<深入浅出 ASP.NET Core>,终于上架了.目前天猫.京东等主流平台均有销售. 这本书是基于 ...

  7. ASP.NET Core学习资源汇总

    ASP.NET Core入门学习资源汇总篇幅比較長,分为七个部分. (一)认识.NET Core (二)Vistual Studio安装.调试 (三)Asp.Net Core入门指南与学习路线 (四) ...

  8. 10个小技巧助您写出高性能的ASP.NET Core代码

    今天这篇文章我们来聊一聊如何提升并优化ASP.NET Core应用程序的性能,本文的大部分内容来自翻译,当然中间穿插着自己的理解,希望对大家有所帮助!话不多说开始今天的主题吧! 我们都知道性能是公共网 ...

  9. 第五篇:Visual Studio 2008 Web开发使用的新特性

    第五篇:Visual Studio 2008 Web开发使用的新特性 本篇翻译自MSDN. .NET Framwork 3.5与Visual Studio 2008 包含很多新特性.AJAX的Web开 ...

最新文章

  1. TextInputLayout
  2. 顶级项目管理工具 Top 10
  3. 网元——就是网络中的元素,网络中的设备。总之,网元是网络管理中可以监视和管理的最小单位...
  4. ROS服务通信机制原理及示例代码
  5. 分类与回归树(CART)相关知识
  6. linux c之<setjmp.h>使用总结
  7. selenium自动化测试_49自动化测试中最常见的Selenium异常
  8. 直接点oracle表编辑器,DbForge Studio for Oracle入门教程:如何在表编辑器中创建表...
  9. dsd语言证书c1是什么,DSD一级德语语言证书考试在嘉兴高级中学举行
  10. 非名校学生如何进入一二线互联网公司
  11. 亚马逊狂发智能硬件新品:全新音箱、微波炉、挂钟、家庭卫士
  12. 如何知道PostgreSQL数据库下每个数据库所对应的目录
  13. powerdesigner错误提示实体属性名称唯一性_SolidWorks用保存实体创建新零件与装配体...
  14. (最新)面向科研人员的免费遥感数据集
  15. linux docker位置查找,linux – 如何在Docker中获取依赖子图像列表?
  16. MATLAB自动设置仿真曲线颜色和线型属性
  17. java digester_Apache Commons Digester
  18. HITB CTF 2018 gundam 做题笔记
  19. 打开计算机不显示磁盘盘符,移动硬盘盘符不显示如何修复
  20. 【前端】跨域 问题 原理 + 解决方案 下

热门文章

  1. C# 操作FireBird 附源码
  2. 安装分布式文件系统MooseFS
  3. MetroGridHelper: A helpful debugging assistant for designers and developers alike
  4. Eclipse Java注释模板设置详解
  5. 简单的作好服务器安全的几个步骤
  6. .Net下二进制形式的文件(图片)的存储与读取 [ZT]
  7. .NET 6 使用 Obfuscar 进行代码混淆
  8. 如何通过 HttpWebRequest 上传文件?
  9. 微软第二财季营收达 517 亿美元,净利润同比增长 21%
  10. 从编译器层面理解C#中的闭包的这个坑!