ASP.NET MVC轻教程 Step By Step 11——数据注解
将验证规则写在Cotroller里不是一个好办法,这样会显得代码很啰嗦,更重要的是将业务逻辑写入Controller,使得Controller变得更“重”,不符合设计原则。更好的办法是使用验证注解属性,这些属性用于模型类中。
打开Message类,添加注解属性。
using System.ComponentModel.DataAnnotations;
namespace MessageBoard.Models { public class Message { [Required(ErrorMessage = "昵称不能为空")] public string NickName { set; get; } [Required(ErrorMessage = "内容不能为空")] [MinLength(15,ErrorMessage = "内容不能少于15字")] public string Content { set; get; } public DateTime ReleaseDate { set; get; } } }
数据注解特性定义在名称空间System.ComponentModel.DataAnnotations中,常用的注解特性包括
属性名称 |
描述 |
Required |
标识该属性为必需参数,不能为空 |
StringLength |
标识该字符串有长度限制,可以限制最小或最大长度 |
Range |
标识该属性值范围,通常被用在数值型和日期型 |
RegularExpression |
标识该属性将根据提供的正则表达式进行对比验证 |
CustomValidation |
标识该属性将按照用户提供的自定义验证方法,进行数值验证 |
接下来删除在Write动作方法中的验证代码。
[HttpPost] public ActionResult Write(Message message) { if (ModelState.IsValid) { message.ReleaseDate = DateTime.Now;
messages.Add(message); return RedirectToAction("Index"); } else { return View(message); } }
现在Write方法看起来简洁多了。页面运行结果与上一节一致,但程序代码简洁优雅了许多,所以使用数据注解完成验证功能是我们主要的手段。
分类:
ASP.NET MVC
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端