如何在Action启动之前注入Command Validator并更新ModelState

时间:2013-04-30 11:43:55

标签: asp.net-mvc validation asp.net-mvc-4 command-pattern

我们的很多架构都围绕着命令ICommandHandler。我们将一个Command模型发布到控制器动作。然后通过运行ICommandValidator的验证器(如果由DI找到)在每个操作中验证命令/模型。然后通过合并从IComamndValidator返回的错误来更新ModelState。

命令验证程序是域模型项目的一部分(并且具有各种实现,具体取决于启用的客户端/功能等)。我们希望使用域模型中的验证器,因为它们也在项目的非MVC端使用。

有没有人知道我们可以在ICommandValidator中挂钩的扩展点,以便在操作开始之前运行它们。我见过ModelValidatorProviders,但似乎不是我们需要的。我们想要注入命令验证器(如果存在),运行验证器,并在操作开始之前更新ModelState。使用过滤器等似乎并不正确,因为我认为有一个延伸点我缺少/误解。

赞赏任何想法

2 个答案:

答案 0 :(得分:1)

您可以通过执行以下操作来查看MVC的扩展点:

打开Global.asax |右键单击HttpApplication |转到定义

以下是对MVC 4请求管道的好评:

http://jameschambers.com/blog/a-web-developer-s-look-at-the-mvc4-request-pipeline

答案 1 :(得分:0)

尝试OnActionExecuting事件。

假设您有一个基本控制器,您可以在那里覆盖该事件,它将在强行动

之前触发每个派生控制器