Asp.net mvc 4 如何在ASP MVC 4或5控制器中挂钩FluentValidation服务
我正在使用FluentValidation,并像这样进行验证Asp.net mvc 4 如何在ASP MVC 4或5控制器中挂钩FluentValidation服务,asp.net-mvc-4,asp.net-mvc-5,fluentvalidation,Asp.net Mvc 4,Asp.net Mvc 5,Fluentvalidation,我正在使用FluentValidation,并像这样进行验证 [HttpPost] public ActionResult Create(CourseCategory category) { var result = new CourseCategoryValidator().Validate(category); try { if (result.IsValid) {
[HttpPost]
public ActionResult Create(CourseCategory category)
{
var result = new CourseCategoryValidator().Validate(category);
try
{
if (result.IsValid)
{
_uow.CourseCategory.Insert(category);
_uow.Commit();
FlashMessage(category.Code + " - " + category.Name + " created!", Models.FlashMessageType.Success);
return RedirectToAction("Index");
}
else
{
foreach (var error in result.Errors)
{
ModelState.AddModelError(error.PropertyName, error.ErrorMessage);
}
}
}
catch (Exception)
{
ModelState.AddModelError("", "saving failed.");
}
return View(category);
}
但这有点混乱,必须重复每一个需要验证的行动
我的问题是,有没有一种方法可以在命中控制器之前钩住验证?所以我可以调用
if(validator.IsValid)
如果验证失败,那么错误消息会自动填充,这样我就不必重复它们了。您不需要做所有这些
FluentValidation支持MVC的模型绑定。具备一切您需要的功能:
FluentValidationModelValidatorProvider.Configure()注册FluentValidation代码>到您的Global.asax文件
[HttpPost]
public ActionResult Create(CourseCategory category)
{
if (ModelState.IsValid)
{
_uow.CourseCategory.Insert(category);
_uow.Commit();
FlashMessage(category.Code + " - " + category.Name + " created!", Models.FlashMessageType.Success);
return RedirectToAction("Index");
}
else
{
return View(category);
}
}