Tag Helpers是一个非常好用的工具
官方链接:Tag Helpers in ASP.NET Core | Microsoft Docs

What are Tag Helpers?
Tag Helpers enable server-side code to participate in creating and rendering HTML elements in Razor files. For example, the built-in ImageTagHelper can append a version number to the image name. Whenever the image changes, the server generates a new unique version for the image, so clients are guaranteed to get the current image (instead of a stale cached image). There are many built-in Tag Helpers for common tasks - such as creating forms, links, loading assets and more - and even more available in public GitHub repositories and as NuGet packages. Tag Helpers are authored in C#, and they target HTML elements based on element name, attribute name, or parent tag. For example, the built-in LabelTagHelper can target the HTML element when the LabelTagHelper attributes are applied. If you’re familiar with HTML Helpers, Tag Helpers reduce the explicit transitions between HTML and C# in Razor views. In many cases, HTML Helpers provide an alternative approach to a specific Tag Helper, but it’s important to recognize that Tag Helpers don’t replace HTML Helpers and there’s not a Tag Helper for each HTML Helper. Tag Helpers compared to HTML Helpers explains the differences in more detail.

Tag Helpers常用在用在表单(Forms)中,使用示例如下:

Member.cs:

public class Member
{public int PersonId { get; set; }public string Name { get; set; }[EmailAddress]public string Email { get; set; }[DataType(DataType.Password)]public string Password { get; set; }[DataType(DataType.PhoneNumber)]public string Telephone { get; set; }[Display(Name="Date of Birth")]public DateTime DateOfBirth { get; set; }public decimal Salary { get; set; }[Url]public string Website { get; set; }[Display(Name="Send spam to me")]public bool SendSpam { get; set; }public int? NumberOfCats { get; set; }public IFormFile Selfie { get; set; }
}

RegisterModel.cs:

public class RegisterModel : PageModel
{[BindProperty]public Member Member { get; set; }public void OnGet(){}
}

Register.cshtml:

<form method="post"><input asp-for="Member.PersonId" /><br /><input asp-for="Member.Name" /><br /><input asp-for="Member.Email" /><br /><input asp-for="Member.Password" /><br /><input asp-for="Member.Telephone" /><br /><input asp-for="Member.Website" /><br /><input asp-for="Member.DateOfBirth" /><br /><input asp-for="Member.Salary" /><br /><input asp-for="Member.SendSpam" /><br /><input asp-for="Member.NumberOfCats" /><br /><input asp-for="Member.Selfies" /><br /><button>Submit</button>
</form>

Tag Helpers可以和在表单(Forms)的验证一起用,使用示例如下:
UserModel.cs

public class UserModel : PageModel
{[BindProperty][Required][MinLength(6)]public string UserName { get; set; }[BindProperty][Required, MinLength(6)]public string Password { get; set; }[BindProperty, Required, Compare(nameof(Password))]public string Password2 { get; set; }

xxx.cshtml:

@section scripts{@await Html.PartialAsync("_ValidationScriptsPartial")
}
<form method="post"><div><input asp-for="UserName" /><span asp-validation-for="UserName"></span></div><div><input asp-for="Password" /><span asp-validation-for="Password"></span></div><div><input asp-for="Password2" /><span asp-validation-for="Password2"></span></div><div><input type="submit" /></div>
</form>

ASP .NET Core Web开发之 Tag Helpers相关推荐

  1. ASP.NET Core Web API下事件驱动型架构的实现(四):CQRS架构中聚合与聚合根的实现

    在前面两篇文章中,我详细介绍了基本事件系统的实现,包括事件派发和订阅.通过事件处理器执行上下文来解决对象生命周期问题,以及一个基于RabbitMQ的事件总线的实现.接下来对于事件驱动型架构的讨论,就需 ...

  2. 加速ASP.NET Core WEB API应用程序。 第三部分

    深度重构和完善ASP.NET Core WEB API应用程序代码 (Deep refactoring and refinement of ASP.NET Core WEB API applicati ...

  3. 如何测试ASP.NET Core Web API

    在本文中,我们将研究如何测试你的ASP .NET Core 2.0 Web API解决方案.我们将了解使用单元测试进行内部测试,使用全新的ASP .NET Core的集成测试框架来进行外部测试. 本文 ...

  4. 重温.NET下Assembly的加载过程 ASP.NET Core Web API下事件驱动型架构的实现(三):基于RabbitMQ的事件总线...

    重温.NET下Assembly的加载过程 最近在工作中牵涉到了.NET下的一个古老的问题:Assembly的加载过程.虽然网上有很多文章介绍这部分内容,很多文章也是很久以前就已经出现了,但阅读之后发现 ...

  5. 如何测试 ASP.NET Core Web API

    在本文中,我们将研究如何测试你的 ASP .NET Core 2.0 Web API 解决方案.我们将了解使用单元测试进行内部测试,使用全新的 ASP .NET Core 的集成测试框架来进行外部测试 ...

  6. ASP.NET Core Web API下事件驱动型架构的实现(三):基于RabbitMQ的事件总线

    在上文中,我们讨论了事件处理器中对象生命周期的问题,在进入新的讨论之前,首先让我们总结一下,我们已经实现了哪些内容.下面的类图描述了我们已经实现的组件及其之间的关系,貌似系统已经变得越来越复杂了. 其 ...

  7. ASP.NET Core Web API下事件驱动型架构的实现(二):事件处理器中对象生命周期的管理

    在ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现中,我介绍了事件驱动型架构的一种简单的实现,并演示了一个完整的事件派发.订阅和处理的流程.这种实现太简单了,百十行 ...

  8. ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现

    很长一段时间以来,我都在思考如何在ASP.NET Core的框架下,实现一套完整的事件驱动型架构.这个问题看上去有点大,其实主要目标是为了实现一个基于ASP.NET Core的微服务,它能够非常简单地 ...

  9. 用JWT来保护我们的ASP.NET Core Web API

    在用Middleware给ASP.NET Core Web API添加自己的授权验证 中,自己动手写了一个Middleware来处理API的授权验证,现在就采用另外一种方式来处理这个授权验证的问题,毕 ...

最新文章

  1. 重视隐私信息安全,笑迎人脸识别百亿蓝海
  2. C语言 文件操作9--fgetc()和fputc()
  3. python中关键字 表示空类型_python中什么表示空类型
  4. 征服用计算机弹法,征服WIN7
  5. 人人影视字幕组因盗版视频被查 涉案金额1600余万元
  6. Android启动页欢迎界面大全 (网址)
  7. 月考分析五年级英语html,第一学期五年级英语期末考试试卷分析
  8. LongAdder原理
  9. Rockchip Android12 Codec2 插件 多线程实现代码
  10. 最受程序员 欢迎的14个社区
  11. 【AcWing】语法基础课听课笔记
  12. vue富媒体编辑器组件:vue-wangeditor的使用
  13. springBoot redis开发的Java快递代拿系统(含人脸识别,验证码登录)
  14. 剪映专业版、PR:技巧+资源+获取方式
  15. 微信小程序开发者工具初体验及实现技术初探
  16. debian9.6安装qq遇到的坑(成功安装qq)
  17. [最完整的前端学习手册]——JavaScript基础一:
  18. 咸鱼Maya笔记—骨骼的基本操作
  19. MVC-《东方之星酒店管理系统》项目研发总结
  20. java小黑框运行时汉字为古文,Spring使用中中文乱码的情况

热门文章

  1. cytoscape插件bingo使用
  2. 使用 conda 和 Jupyter 创建你的自定义 R 包,转换笔记为幻灯片
  3. 基础001.Markdown编写云笔记
  4. Python使用matplotlib函数subplot可视化多个不同颜色的折线图、使用set_major_formatter函数自定义设置y轴数值标签格式为百分比
  5. R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(添加均值、标准偏差)实战(dot plot)
  6. R语言使用pwr包的pwr.r.test函数对相关信息分析(Correlations)进行效用分析(power analysis)的语法
  7. pandas中set_option的常用设置:显示所有行、显示所有列、控制浮点型精度、每个数据元素的显示字符数、对齐形式等
  8. R语言临床预测模型的评价指标与验证指标实战:自定义的综合判别改善指标(Integrated Discrimination Improvement, IDI)函数
  9. K近邻(KNN)算法是基于实例的算法,如果训练样本数量庞大,预测的时候挨个计算距离效率会很低下,如何破解?
  10. KL变换+PCA+关系