ActionFilter一定是MVC控制中对于Action控制中最值得研究的玩意,在项目实际中我们不可避免的使用例如:
HandleError
Authorized
OutputCache
在本文中,我们应用Action Selector方式进行Action的选择,想要阐述清楚这个问题,我们从实际的问题出发来关注。
实际的问题,从和老赵的对话了解
我们有个业务室这样的:系统有不同的角色,例如Admin、Client、Agent。假设有个功能叫Book/List,那么就对应了一个List这样的View和action为List这样的BookController,现在,我们的情况是对于不同的角色,所对应的List是不同的。Admin看到的Book/List和Client看到的Book/List是不同的,那么通过Url:http://anytao.com/Book/List/123,不同的角色如何处理,差不多就这样,是否清楚。
我:那么对于同一Action如何更好的return到不同的view?
老赵:具体问题是什么呢?
我: 我现在能想到的是在Action中根据角色Return到不同的View,简单的办法就是在List Action根据角色Return到不同的View。问题是,还有什么更好的办法。
老赵:准备n各action,分别加上自定的ActionSelector,不要用一个Action,不用一个Action然后在里面if。
[OnlyInRole("admin")]
[ActionName("List")]
ListForAdmin()
{
}
[OnlyInRole("user")]
[ActionName("List")]
ListForUser()
{
}
OnlyInRole需要自己写,不过就几行话
我: 哈哈,差不多了,谢啦。
根据老赵的指导,我对此思路进行了必要的探讨,感受果然不同凡响。