MVC为一个控制器写了俩个过滤器A和B,如果A和B单独写一个类。那个运行的顺序是B.Executing -->A.Executing --->A.Executed -->B. Executed。但是如果A和B俩个过滤器和控制器写在同一个文件里面  那么运行顺序是A.Executing -->B.Executing --->B.Executed -->A. Executed。这个是为什么啊

解决方案 »

  1.   

    写在同一个文件是指在同一个action或者controller上面吗?
    另外没代码说个啥……谁知道你怎么写的
      

  2.   

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;namespace WebApiDemo.Controllers
    {
        public class OwnerFilter
        {
            public static string str = "";
        }    public class BFilterAttribute : FilterAttribute, IActionFilter
        {
            public void OnActionExecuted(ActionExecutedContext filterContext)
            {            OwnerFilter.str += "B.OnActionExecuted\n";
            }        public void OnActionExecuting(ActionExecutingContext filterContext)
            {
                OwnerFilter.str += "B.OnActionExecuting\n";
            }
        }
        public class AFilterAttribute : FilterAttribute, IActionFilter
        {
            public void OnActionExecuted(ActionExecutedContext filterContext)
            {
       
                OwnerFilter.str += "A.OnActionExecuted\n";
            }        public void OnActionExecuting(ActionExecutingContext filterContext)
            {            OwnerFilter.str += "A.OnActionExecuting\n";
            }
        }    public class HomeController : Controller
        {
            [AFilter]
            [BFilter]
            public ActionResult Index()
            {
                ViewBag.Title = "Home Page";            return View();
            }
        }
    }