Маршрутизация между контроллером и страницей бритвы в ASP. net core 3.1 - PullRequest
1 голос
/ 31 марта 2020

Я пытаюсь перенаправить метод действия в домашнем контроллере на страницу бритвы. Какой правильный путь?

public async Task<IActionResult> CreateRoom(string name)
{
  db.Chats.Add(new Chat
    {
      Name = name,
      Type = ChatType.Room
    });
    await _db.SaveChangesAsync();
    return Redirect("../Pages/Index");
  }

1 Ответ

1 голос
/ 31 марта 2020

Используйте метод "RedirectToPage" для перенаправления на страницу Razor в asp. net core.

Метод RedirectToPage возвращает новый экземпляр RedirectToPageResult (форма ActionResult). Метод RedirectToPage - это вспомогательный метод, который поставляется с PageModel и помогает избавиться от необходимости записывать новый экземпляр результата действия и упростить код.

 public async Task<IActionResult> CreateRoom(string name)
    {
        _db.Chats.Add(new Chat
        {
            Name = name,
            Type = ChatType.Room
        });
        await _db.SaveChangesAsync();
        return RedirectToPage("Index");//assuming you have the Index page in Pages folder
    }

fyi, RedirectToPage также имеет перегрузки, и вы можете использовать в зависимости от ваших потребностей.

Код выше имеет тот же эффект, что и ниже.

 public async Task<IActionResult> CreateRoom(string name)
    {
        _db.Chats.Add(new Chat
        {
            Name = name,
            Type = ChatType.Room
        });
        await _db.SaveChangesAsync();
        return new RedirectToPageResult("Index");
    }
...