我有一个自定义的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而不是该方法的特定。
我该如何解决?
谢谢!
答案 0 :(得分:1)
我发现使用相同的ActionFilter是不可能的,当你将ActionFilter放在控制器中时,这会为这个过滤器注入所有动作,如果你有相同的ActionFilter,它会被覆盖。为了解决这个问题,我创建了另一个ActionFilter并继承了原来的,我把它放在了Action中。有了这个,新的不会被原件覆盖。