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方法看起来简洁多了。页面运行结果与上一节一致,但程序代码简洁优雅了许多,所以使用数据注解完成验证功能是我们主要的手段。

posted @   iLoop  阅读(404)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示