asp.net core新特性(1):TagHelper
进步,才是人应该有的现象。—— 雨果
今天开始,我就来说说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相关推荐
- [翻译]ASP.NET MVC4新特性之脚本压缩和合并
2019独角兽企业重金招聘Python工程师标准>>> [翻译]ASP.NET MVC4新特性之脚本压缩和合并 目前主流浏览器限制客户端对同一域名只能同时发起6(PS:原文如此)个H ...
- 我心中的ASP.NET Core 新核心对象WebHost(二)
这是ASP.NET Core新核心对象系列的第二篇,上一篇 WebHost准备阶段 我们讲到了WebHostBuilder的初始化及配置.我们给WebHostBuilder进行以下配置 UseKest ...
- 我心中的ASP.NET Core 新核心对象WebHost(一)
以本系列文章向Fish 前辈的那篇我心中的ASP.NET 核心对象致敬.(虽然不知道前辈现在在干什么).一晃就6年过去了,那首 郝云 的<回到那一天>怎么唱来着? 时光一晃,你就三十了. ...
- ASP.NET Core 新核心对象WebHost(一)
以本系列文章向Fish 前辈的那篇我心中的ASP.NET 核心对象致敬.(虽然不知道前辈现在在干什么).一晃就6年过去了,那首 郝云 的<回到那一天>怎么唱来着? 时光一晃,你就三十了. ...
- asp.net core高级应用:TagHelper+Form
上一篇博客<asp.net core新特性(1):TagHelper>我讲解了TagHelper的基本用法和自定义标签的生成,那么我就趁热打铁,和大家分享一下TagHelper的高级用法~ ...
- 推荐一本基于ASP.NET Core 3.1的实战来了
第一本基于 ASP.NET Core 3.1 的实战书来了 我脱产花费了一年时间创作书籍<深入浅出 ASP.NET Core>,终于上架了.目前天猫.京东等主流平台均有销售. 这本书是基于 ...
- ASP.NET Core学习资源汇总
ASP.NET Core入门学习资源汇总篇幅比較長,分为七个部分. (一)认识.NET Core (二)Vistual Studio安装.调试 (三)Asp.Net Core入门指南与学习路线 (四) ...
- 10个小技巧助您写出高性能的ASP.NET Core代码
今天这篇文章我们来聊一聊如何提升并优化ASP.NET Core应用程序的性能,本文的大部分内容来自翻译,当然中间穿插着自己的理解,希望对大家有所帮助!话不多说开始今天的主题吧! 我们都知道性能是公共网 ...
- 第五篇:Visual Studio 2008 Web开发使用的新特性
第五篇:Visual Studio 2008 Web开发使用的新特性 本篇翻译自MSDN. .NET Framwork 3.5与Visual Studio 2008 包含很多新特性.AJAX的Web开 ...
最新文章
- TextInputLayout
- 顶级项目管理工具 Top 10
- 网元——就是网络中的元素,网络中的设备。总之,网元是网络管理中可以监视和管理的最小单位...
- ROS服务通信机制原理及示例代码
- 分类与回归树(CART)相关知识
- linux c之<setjmp.h>使用总结
- selenium自动化测试_49自动化测试中最常见的Selenium异常
- 直接点oracle表编辑器,DbForge Studio for Oracle入门教程:如何在表编辑器中创建表...
- dsd语言证书c1是什么,DSD一级德语语言证书考试在嘉兴高级中学举行
- 非名校学生如何进入一二线互联网公司
- 亚马逊狂发智能硬件新品:全新音箱、微波炉、挂钟、家庭卫士
- 如何知道PostgreSQL数据库下每个数据库所对应的目录
- powerdesigner错误提示实体属性名称唯一性_SolidWorks用保存实体创建新零件与装配体...
- (最新)面向科研人员的免费遥感数据集
- linux docker位置查找,linux – 如何在Docker中获取依赖子图像列表?
- MATLAB自动设置仿真曲线颜色和线型属性
- java digester_Apache Commons Digester
- HITB CTF 2018 gundam 做题笔记
- 打开计算机不显示磁盘盘符,移动硬盘盘符不显示如何修复
- 【前端】跨域 问题 原理 + 解决方案 下
热门文章
- C# 操作FireBird 附源码
- 安装分布式文件系统MooseFS
- MetroGridHelper: A helpful debugging assistant for designers and developers alike
- Eclipse Java注释模板设置详解
- 简单的作好服务器安全的几个步骤
- .Net下二进制形式的文件(图片)的存储与读取 [ZT]
- .NET 6 使用 Obfuscar 进行代码混淆
- 如何通过 HttpWebRequest 上传文件?
- 微软第二财季营收达 517 亿美元,净利润同比增长 21%
- 从编译器层面理解C#中的闭包的这个坑!