Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP MVC ActionFilterAttribute OnActionExecuting未激发_C#_Asp.net_Asp.net Mvc_Redirecttoaction_Actionfilterattribute - Fatal编程技术网

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或参数。有办法吗?恐怕你不能马上做。