ASP.NET MVC 2中的区域属性?

问题描述:

我的应用程序中的“管理”区域包含一堆控制器,并且在所有这些控制器上放置[Authorize]属性有点重复。有没有办法告诉框架,某个区域的所有控制器应该具有某些属性?ASP.NET MVC 2中的区域属性?

编辑:在这种情况下,继承不是一个解决方案。首先,控制器已经从自定义类继承,其次,它应该是装饰类,而不是继承它们。

MVC 3有一项名为Global Action Filters的新功能,它对于您正在做的事情来说是完美的。由于您可能尚未使用MVC 3,因此您也可以通过遵循this example在较早版本的MVC中实施Global Action Filter。只需自定义解决方案以过滤检查您是否位于当前正在执行的请求的“管理”区域,然后应用您的“授权”属性。

这将允许你做到这一点,而不必按照你的要求应用公共基类。

+0

好东西,谢谢! – ciscoheat 2010-09-20 08:52:28

您可以创建一个基本控制器,该区域中的所有控制器都从[Authorize]属性派生并装饰它。

+0

不幸的是,继承链已经很忙。 :) – ciscoheat 2010-09-19 09:48:08

+0

哦,所以你有一个继承链。那么简单地去基地控制器和装饰:-) – 2010-09-19 09:50:28

+0

我的基地控制器是在公共和私人领域之间共享的... – ciscoheat 2010-09-19 09:51:35

有四个选项,

  1. 创建一个单独的基本控制器,使管理员sectionsu从它继承
  2. 添加授权属性的控制器类,而不是每个方法/ Actrion
  3. 上装饰各单独
  4. 写你自己的逻辑进行授权,并添加到您当前的基本控制器