在Controller和Action中执行Action过滤器

时间:2016-11-24 21:27:55

标签: asp.net-mvc action-filter

我有一个自定义的ActionFilter,我想在Controller中执行所有操作以及使用其他参数进行单一操作。

我有这个代码

[CheckPrivilege(Privilege = "Admin;Edit/Admin;View", ReqInternalUser = true, Order = 1)]
[Login(Order = 0)]
public class EjecutivosCuentasController : Controller
{

     [CheckPrivilege(Privilege = "Admin;Edit", ReqInternalUser = true)]
     public ActionResult Edit(long? IdEjecutivo)
     {
         return View();
     }

     [CheckPrivilege(Privilege = "Admin;View", ReqInternalUser = true)]
     public ActionResult Lectura(long? IdEjecutivo)
     {
         return View();
     }

    [HttpGet]
    public JsonResult GetClients()
    {
       ...
    }

}

我需要为所有操作运行CheckPrivilege(Privilege = "Admin;Edit/Admin;View", ReqInternalUser = true, Order = 1) ActionFilter,并且需要针对某些操作运行特定的ActionFilter。 问题是当我调用Action时,Edit只调用Controller的ActionFilter而不是该方法的特定。

我该如何解决?

谢谢!

1 个答案:

答案 0 :(得分:1)

我发现使用相同的ActionFilter是不可能的,当你将ActionFilter放在控制器中时,这会为这个过滤器注入所有动作,如果你有相同的ActionFilter,它会被覆盖。为了解决这个问题,我创建了另一个ActionFilter并继承了原来的,我把它放在了Action中。有了这个,新的不会被原件覆盖。