Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core 7
Для переадресации на страницу Razor применяется метод RedirectToPage(). В этот метод передается относительный путь к странице. При этом передаваемый путь объединяется с путем к текущей странице, из которой вызывается данный метод.
Например, текущая страница расположена по пути Pages/Products/Create.cshtml.
И из нее вызывается метод RedirectToPage, к примеру:
public IActionResult OnGet() { return RedirectToPage("Index"); }
Рассмотрим некоторые возможные сопоставления передаваемых путей и страниц Razor:
Вызов метода | На какую страницу ведет |
RedirectToPage("/Index") | Pages/Index |
RedirectToPage("./Index") | Pages/Products/Index |
RedirectToPage("../Index") | Pages/Index |
RedirectToPage("Index") | Pages/Products/Index |
RedirectToPage("/Edit") | Pages/Edit |
RedirectToPage("Edit") | Pages/Products/Edit |
Для генерации адреса на страницу Razor применяется метод Url.Page(). Этот метод имеет ряд перегрузок, позволяющих задать различные параметры. Некоторые из версий:
Page(string pageName, string pageHandler, object values); Page(string pageName, object values); Page(string pageName, string pageHandler); Page(string pageName);
Параметр pageName
указывает на путь к странице. Параметр pageHandler
представляет обработчик, определенный для страницы.
А параметр values
представляет параметры строки запроса, которые передаются странице.
Например, страница Person принимает два параметра:
public class PersonModel : PageModel { public IActionResult OnGet(string name, int age) { return Content($"Запрошенные данные: name {name} age {age}"); } }
Создание в адреса на эту страницу с последующей переадресацией в коде C#:
public class IndexModel : PageModel { public IActionResult OnGet() { string url = Url.Page("Person", new {name="Tom", age=34}); return Redirect(url); } }
Здесь полагается, что станица Index находится в одном каталоге со страницей Person. То есть в данном случае будет сгенерирован адрес Person?name=Tom&age=34.
Создание адреса на страницу в представлении:
<a href='@Url.Page("/Person", new {name="Bob", age=32 })'>Person</a>
Для создания ссылки в тег-хелпере AnchorTagHelper применяется параметр asp-page. Например, ссылка на ту же страницу Person:
<a asp-page="Person" asp-route-name="Bob" asp-route-age="32">Person</a>
Дополнительно с помощью параметра asp-handler можно указать обработчик на странице.