Переадресация и создание ссылок в Razor Pages

Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core 7

Последнее обновление: 05.12.2019

Для переадресации на страницу Razor применяется метод RedirectToPage(). В этот метод передается относительный путь к странице. При этом передаваемый путь объединяется с путем к текущей странице, из которой вызывается данный метод.

Например, текущая страница расположена по пути Pages/Products/Create.cshtml.

Переадресация в Razor Pages в ASP.NE Core

И из нее вызывается метод 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 можно указать обработчик на странице.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850