Asp.net mvc 4 如何在ASP MVC 4或5控制器中挂钩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) {

我正在使用FluentValidation,并像这样进行验证

[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的模型绑定。具备一切您需要的功能:

  • 通过NuGet安装适当的软件包。MVC3、MVC4和MVC5的每个版本都有不同的版本
  • 通过添加
    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);
        }
    }
    
  • 希望这有帮助