Все мои контроллеры наследуются от BaseController, который имеет атрибут ActionFilter:
[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 обслуживает его представление профиля.
Как работают ActionFilters и / или атрибуты, которые [AnalyticsData(Page = "AccountProfile")] в действии переопределяет / заменяет [AnalyticsData] в BaseController?