我有2个控制器Home
public class HomeController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
// do some irrelevant stuff
base.OnActionExecuting(filterContext);
}
public ActionResult Index()
{
return View();
}
}
和Service
与
public ActionResult Confirm()
{ return RedirectToAction("Index", "Home");}
一个ActionFilterAttribute
使用OnActionExecuting
方法
public class InvitationModeAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
// do some stuff
base.OnActionExecuting(filterContext);
}
}
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new InvitationModeAttribute());
}
}
当我转到localhost/Service/Confirm
时,会OnActionExecuting
被触发,但是当调用RedirectToAction
时,OnActionExecuting
不会被触发。
我怎样才能在RedirectToAction
之后发现这个?
由于
答案 0 :(得分:1)
参考https://dev.mysql.com/doc/refman/5.6/en/connection-access.html更清晰
首先 删除控制器级别中的OnActionExecuting方法
mysql> GRANT ... TO rajivratn@localhost ...;
第二控制器
public class HomeController : Controller
{
[InvitationModeAttribute]
public ActionResult Index()
{
return View();
}
}
来自MSDN
行动范围过滤器
除了用动作标记个人动作方法 过滤器,您可以使用操作将控制器类标记为整体 过滤。在这种情况下,过滤器适用于该过滤器的所有操作方法 控制器。此外,如果您的控制器来自另一个 控制器,基本控制器可能有自己的动作过滤器 属性。同样,如果您的控制器覆盖了一个动作方法 从基本控制器,该方法可能有自己的动作过滤器 属性以及它从重写的操作方法继承的属性。至 让动作更容易理解动作过滤器如何协同工作 方法分为范围。范围定义属性的位置 适用,例如它是标记类还是方法,以及是否标记 标记基类或派生类。