C# ASP MVC ActionFilterAttribute OnActionExecuting未激发
我有两个控制器C# ASP MVC ActionFilterAttribute OnActionExecuting未激发,c#,asp.net,asp.net-mvc,redirecttoaction,actionfilterattribute,C#,Asp.net,Asp.net Mvc,Redirecttoaction,Actionfilterattribute,我有两个控制器Home public class HomeController : Controller { protected override void OnActionExecuting(ActionExecutingContext filterContext) { // do some irrelevant stuff base.OnActionExecuting(filter
Home
public class HomeController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
// do some irrelevant stuff
base.OnActionExecuting(filterContext);
}
public ActionResult Index()
{
return View();
}
}
public ActionResult Confirm()
{ return RedirectToAction("Index", "Home");}
和服务
与
public class HomeController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
// do some irrelevant stuff
base.OnActionExecuting(filterContext);
}
public ActionResult Index()
{
return View();
}
}
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
,但当调用redirectoaction
时,不会触发OnActionExecuting
。
在重定向到操作后如何捕获此信息
谢谢请参阅以了解更多信息
首先
删除控制器级别的OnActionExecuting方法
public class HomeController : Controller
{
[InvitationModeAttribute]
public ActionResult Index()
{
return View();
}
}
第二控制器
public class ServiceController : Controller
{
[InvitationModeAttribute]
public ActionResult Confirm()
{
return RedirectToAction("Index", "Home");
}
}
来自MSDN
行动范围过滤器
除了用动作标记单个动作方法外
过滤器,您可以使用操作将控制器类标记为一个整体
过滤器。在这种情况下,过滤器将应用于该系统的所有操作方法
控制器。此外,如果您的控制器来自另一个控制器
控制器,基础控制器可能有自己的操作筛选器
属性。同样,如果控制器重写了操作方法
从基本控制器,该方法可能有自己的操作筛选器
属性及其从重写的操作方法继承的属性。到
更容易理解操作过滤器如何协同工作,操作
方法被分组到作用域中。作用域定义属性的位置
应用,例如它是否标记类或方法,以及
标记基类或派生类
显示两个控制器的代码。已编辑。。。关键是,在编写了OnActionExecuting方法的RedirectToAction之后,OnActionExecuting不会被激发?@Maarty我看不到属性。你用想要的属性修饰了这两个动作了吗?@SillyVolley-EditedTanks。嗯,它很管用。但这不是我想要的。。不管怎么说,我的方法肯定是错误的。。我需要的是在HomeController中知道它被从服务控制器重定向。我希望所有方法都使用它,所以我不想对每个重定向使用任何cookie或参数。有办法吗?恐怕你不能马上做。