Как перенаправить ответ из представления Razor? - PullRequest
0 голосов
/ 16 мая 2019

Здравствуйте, я хочу перенаправить на страницу из _layout.htmlcs, используя бритву ....

Я пробовал много вещей, чтобы сделать ответ. Перенаправление работало, но не удалось ...

<div class="navbar-collapse collapse ">
  <ul class="navbar-nav flex-grow-1">
    @if (User.Identity.IsAuthenticated){
      @if (User.IsInRole("Admin")){
        Response.Redirect("~/Pages/Admin/AddAccount");
      }
      if (User.IsInRole("User")){

Respnse.redirect может работать правильно или должен использоваться его альтернативный вариант ...

Ответы [ 2 ]

2 голосов
/ 16 мая 2019

Представление предназначено только для отображения страницы. Предполагается, что если вы дойдете до этого шага, уже определено, что это страница, которую вы хотите отобразить.

Если вы хотите перенаправить, вы бы вернули RedirectResult вместо ViewResult из вашего метода контроллера. Есть несколько методов, которые возвращают RedirectResult как

Redirect(someUrl);
RedirectToAction(actionName, controllerName)

... и другие, и их перегрузки.

Я рекомендую RedirectToAction, потому что даже если он будет скомпилирован, если вы неправильно введете значения, Visual Studio по крайней мере даст вам визуальную индикацию того, что контроллер и действие, на которое вы ссылаетесь, существуют.

Какие бы условия вы ни проверяли в представлении, чтобы определить, хотите ли вы перенаправить, просто отметьте их в контроллере.

1 голос
/ 16 мая 2019

Использование <a asp-page="/Admin/AddAccount">Add Account</a>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...