MVC模型验证
一、在动作方法中执行验证
Controller中使用ModelState.AddModelError()方法在验证中根据条件输出错误信息。
如: ModelState.AddModelError("UserName", "用户名不能为空");
需要注意的是,这句生成的是属性级错误,因为AddModelError的第一个参数指定的是被验证的属性名;
如果要改成模型级错误,则保持第一个参数为空,如:ModelState.AddModelError("", "用户名不能为空");
属性级错误和模型级错误
属性级错误是显示在 字段后面
模型级错误是统一显示在页面指定的位置
(自己总结:模型级错误用处就是动作方法中逻辑处理过程需要抛出的错误)
如图所示:

对应的cshtml页面代码:

Html.ValidationSummary()辅助器默认会显示所有错误,包括模型级错误和属性级错误。
重载 Html.ValidationSummary(true),boolean值为true代表只显示模型级错误,忽略属性级错误,如:

可以看到,现在它忽略了属性级错误,只会显示模型级的。
二、在模型类中执行验证
在模型类中通过 验证注解属性 来指定验证规则,验证注解属性有内建的默认模型绑定器DefaultModelBinder进行检测并强制执行。
在对模型类运用绑定过程的任何地方都会强制执行验证规则,而不只存在于个别方法中。
内建的验证注解属性有:
Compare
Range
RegularExpression
Required
StringLength
三、其他验证方式
除了以上两种之外,还有其他的方式进行模型验证,如:
1、在模型绑定器中验证;
2、创建自验证模型;
详见《精通ASP.NET MVC3框架》485页、492页
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端