Прежде всего, я знаю, что в asp. net основных страницах бритвы нет фильтра действий. Но я ищу, чтобы найти механизм, который работает аналогично. Я пытаюсь добиться применения фильтра, основанного на методах-обработчиках. Когда я пытаюсь использовать PageFilter, он применяется ко всем методам. Есть ли какой-либо метод / способ исключить некоторые методы-обработчики на одной странице?
Чтобы прояснить вопрос, я добавил несколько примеров.
Вот пример pagefilter
public class FormValidatorRazor : IAsyncPageFilter
{
public async Task OnPageHandlerExecutionAsync(PageHandlerExecutingContext context, PageHandlerExecutionDelegate next)
{
if (context.HttpContext.Request.Method.Equals("POST") || context.HttpContext.Request.Method.Equals("PUT"))
//code removed for brevity
}
Вот как я применяю его к проекту
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages().AddMvcOptions(options =>
{
options.Filters.Add(new FormValidatorRazor());
//code removed for brevity
}
}
Вот пример обработчика методы.
public async Task<IActionResult> OnPostUpdate(ExModel model)
{
}
public async Task<IActionResult> OnPostEdit(ExModel model)
{
}
Я хочу, чтобы мой фильтр был применен к OnPostUpdate, но не к OnPostEdit. Как мне добиться такого поведения?