Validate Model State automatically in ASP.NET Core 2.0
阿新 • • 發佈:2018-02-13
開始 lte 定義 新一代 get www. true 狀態 ins
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/
Validate Model State automatically in ASP.NET Core 2.0