如果不在ActionFilter中放置逻辑?

时间:2012-11-26 02:51:04

标签: c# asp.net-mvc

所以我一直在阅读StackOverlow的一些评论,说你不应该把业务逻辑放在自定义ActionFilterAttribute中,因为它被认为是元数据。

例如,访问存储库并进行一些检查,并在您的自定义属性中进行相应处理(错误)。

首先,我不确定我对此有多赞同,因为很多框架过滤器(Authenticate)等都做了业务逻辑 - 主要区别在于它主要在控制器范围内,即只访问控制器值,路由数据等

所以我的问题是,当你确实需要使用ActionFilter来标记各个动作以进行额外的逻辑/处理时,你在哪里放置逻辑?

感谢输入/

1 个答案:

答案 0 :(得分:1)

使用actionfilters来执行某些业务逻辑没有任何问题。通常,这就是您实现日志记录,安全性等交叉问题的方法(正如您所指出的)。

他们的目的就是他们的名字。您的操作的过滤器。传入操作或对数据的传出修改

您需要注意的是放置修改业务数据的行为并将更改保留在actionfilters中。对于下一个开发人员来说,这些类型的东西对于查看代码是违反直觉的。它们不会过滤任何东西,它们会改变整个系统的状态,这就是动作(命令)的用途。