您的位置:首页 > 编程语言 > ASP

Validate Model State automatically in ASP.NET Core 2.0

2018-02-13 20:22 926 查看
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 });
}
}
}


修改启动类

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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: