Как разделить метод обработчика между несколькими страницами Razor? - PullRequest
0 голосов
/ 23 марта 2020

Я создаю приложение, используя ASP. NET Страницы бритвы.

Я уже выполнил регистрацию и вход в систему с использованием. NET Идентификационные данные. В моем частичном представлении _Layout я проверяю User.Identity.IsAuthenticated. Если это не так, отображаются гиперссылки на страницы регистрации и входа.

Теперь, если User.Identity.IsAuthentiated истинно, я хочу отобразить гиперссылку для выхода из системы. Однако, этот не требует отдельной Страницы Razor. Я просто хочу выйти из системы и перенаправить на Индекс. Я думал об использовании метода-обработчика, такого как:

public async Task<IActionResult> OnPostLogoutAsync()
        {
            await signInManager.SignOutAsync();
            return RedirectToPage("/Index");
        }

Возможно ли сделать его доступным с каждой страницы Razor? Или есть какой-то другой способ решения моей проблемы?

Другие вещи, о которых я думал:

  1. Реализация этого как метода расширения PageModel. Однако, мне кажется, что это решение выглядит довольно неуклюжим и обманчивым. Мне нужно было бы ввести SignInManager<> в каждую страницу Razor по умолчанию, и я чувствую, что это неправильно.

  2. Создание контроллера MVC. Простое решение, которое будет работать. Тем не менее, я хотел бы знать, возможно ли это сделать с помощью простых Razor Pages.

  3. Добавление модели в частичное представление _Layout. Однако для того, чтобы у меня был доступ к методу RedirectToPage, модель должна наследоваться от PageModel. В таком случае я получаю ошибки. Поэтому, если я не наследую от PageModel, мне нужно найти другой способ перенаправления на другую страницу Razor, который делает это похожим на пункт 2, но с дополнительными шагами и более неуклюжим.

1 Ответ

0 голосов
/ 24 марта 2020

Чтобы разделить метод обработчика между несколькими страницами Razor, я думаю, вы можете поместить этот метод в _layout.cshtml.cs, а другие страницы бритвы должны ссылаться на _layout.cshtml.

Я нашел статью, соответствующую вашим потребностям Вы можете сослаться на это .

...