【发布时间】:2010-07-16 19:50:56
【问题描述】:
我所有的控制器都继承自具有 ActionFilter 属性的 BaseController:
[AnalyticsData]
public class BaseController : Controller {}
public class AccountController : BaseController {}
我的控制器中的一些操作重用了 AnalyticsData ActionFilter:
public class AccountController : BaseController
{
[AnalyticsData(Page="AccountProfile")]
public ActionResult Profile()
{
// return View
}
}
我注意到 AnalyticsData ActionFilter 只运行一次。这是一件好事,我只希望它运行一次,但我想知道这是怎么发生的。如果我在 OnActionExecuting 中设置断点:
public class AnalyticsAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
// break point set here
}
}
...当 AccountController 为其提供 Profile 视图时,它只会被点击一次。
ActionFilters 和/或属性如何工作以使 Action 上的 [AnalyticsData(Page="AccountProfile")] 覆盖/替换 BaseController 上的 [AnalyticsData]?
【问题讨论】:
标签: asp.net asp.net-mvc attributes action-filter