Validate Model State automatically in ASP.NET Core 2.0
2024-10-16 17:04:27
if (!ModelState.IsValid) { //TODO 模型验证失败需要做的事情 }
上面的代码不管是在传统的ASP.NET还是新一代ASP.NET Core中都是为了验证模型的状态是否合法,如果IsValid属性的值为True,则验证成功。这样的代码一般我们会写在Action方法中的最开始处,如果在每个Action中都写这样的判断就会增加我们的工作量和以及存在重复性,在这篇文章中将讨论如何自动进行模型验证。
要实现这个功能首先需要定义一个ActionFilter
public class ValidateModelStateAttribute : Microsoft.AspNetCore.Mvc.Filters.ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext context) { if (!context.ModelState.IsValid) { List<string> errorList = new List<string>(); foreach (var modelState in context.ModelState.Values) { foreach (var error in modelState.Errors) { errorList.Add(error.ErrorMessage); } } context.Result = new JsonResult(new { success = false, message = errorList }); } } }
在每个Action执行之前都会进行模型验证。修改启动类
public void ConfigureServices(IServiceCollection services) { services.AddMvc(options => { options.Filters.Add(typeof(ValidateModelStateAttribute)); }); }
自动进行模型验证就实现了。走个实验:
public class User { [Required] [EmailAddress] public string Email { get; set; } [Required] public string Name { get; set; } }
[HttpPost] public IActionResult Insert(User user) { return Json(user); }
是不是有点AOP的意思呢?
原文地址:http://www.talkingdotnet.com/validate-model-state-automatically-asp-net-core-2-0/
最新文章
- 就这么漂来漂去---一个毕业三个月的java程序员的裸辞风波
- YYModel 源码解读(二)之NSObject+YYModel.h (2)
- 快速傅里叶(FFT)的快速深度思考
- Leetcode: Validate IP Address
- 常见linux命令释义(第二天)
- C语言中的位操作(14)--反转比特位
- sql脚本比较大,sqlserver 无法导入,就用cmd命令执行
- leetcode majority number
- Delphi 为什么它提示PCHAR是不安全的类型呢 Unsafe type &#39;PChar&#39;
- SQLServer中临时表与表变量的区别分析【转】
- 今天学习的裸板驱动之存储控制器心得(初始化SDRAM)
- react+redux+generation-modation脚手架添加一个todolist
- sublime汉化教程
- MYSQL(三)
- This Gradle plugin requires a newer IDE able to request IDE model level 3. For Android Studio this means v3+
- SPOJ GSS系列
- 2018-11-3&; maven
- ES6学习笔记六:迭代
- Linux regulator系统
- beta 发布的相关评论