Фильтры страниц: настройка привязки модели для Razor Pages¶
Фильтры действий применяются только к контроллерам и действиям, но не страницам Razor. Аналог для Razor Pages - фильтры страниц, которые, в свою очередь, не применяются к контроллерам и действиям.
ASP.NET Core включает в себя несколько готовых фильтров страниц. Например, есть фильтр PageResponseCacheFilter, аналогичный ResponseCacheFilter.
Фильтры страниц необычны, так как реализуют три метода. Специфический третий метод OnPageHandlerSelected выполняется после выбора обработчика страницы и перед привязкой модели. Однако, на практике он используется редко, и фильтры страниц исполняют роль, аналогичную фильтрам действий.
Тонкое различие заключается в том, что фильтр действий обращается к аргументам действий через context.ActionArguments, тогда как фильтр страниц может обращаться к context.HandlerArguments. Однако, в этом случае есть другой вариант.
Страницы Razor часто привязываются к открытым свойствам PageModel с использованием атрибута [BindProperty]. К этим свойствам можно получить доступ напрямую, приведя свойство HandlerInstance к правильному типу PageModel:
Аналогично фильтрам действий, базовый класс PageModel реализует IPageFilter и IAsyncPageFilter, соответственно, есть возможность создать фильтр для одной страницы, переопределив нужны методы прямо в PageModel.
Дата создания : 3 октября 2022 г.