Зачем вызывать base.OnActionExecuting(filterContext);?
Я просто смотрю на старый код и у меня есть фильтр действий (метод OnActionExecuting)
и в конце этого я
base.OnActionExecuting(filterContext);
Зачем искать, я вижу это довольно много раз. Я также вижу, что в моем старом теге Авторизация я называю базу.
Должен ли я всегда вызывать базовые методы после?
Ответы
Ответ 1
Должен ли я всегда вызывать базовые методы после?
Это будет зависеть от ситуации.
Например, в фильтрах авторизации (исходя из AuthorizeAttribute
), если вы вызываете базовый метод, будет выполнена вся существующая логика авторизации, встроенная в ASP.NET MVC. Если вы его не назовете, будет применена только ваша авторизационная логика.
В отношении других стандартных фильтров действий (из ActionFilterAttribute
) все OnActionExecuting
, OnActionExecuted
, OnResultExecuting
и OnResultExecuted
определяются как виртуальные, но их тело пустое, поэтому оно не " t не имеет значения, если вы вызываете или не используете базовый метод.
Ответ 2
Я полагаю, если вы позволите Visual Studio автоматически создать переопределяющий метод, набрав override
и выбрав метод в intellisense и нажав вкладку, Visual Studio автоматически добавит base.MethodName()
в тело метода.
Если вам это не нужно, удалите его. Я всегда удалял его при создании ActionFilter
и еще не имел проблемы. Единственный раз, когда вы не должны его удалять, - это когда вам нужен базовый метод для вызова.