Skip to content

Latest commit

 

History

History
54 lines (45 loc) · 3.97 KB

File metadata and controls

54 lines (45 loc) · 3.97 KB

← Примеры Razor Pages

Маршрутизация

📘 Маршрутизация в ASP.NET Core

  • Замена маршрута:
    Допутим вы хотите, чтобы первую часть маршрута с параметрами обрабатывала одна страница, а вторую часть - другая страница.
    Например, маршрут catalog/{section} обрабатывает стандартная страница /catalog/index.cshtml, а маршрут catalog/{section}/{item) обрабатывает страница /catalog/item.cshtml. Тогда, для страницы /catalog/item.cshtml вам надо переписать маршрут:
@page "/catalog/{section}/{item}"

а на странице catalog/{section} предусмотреть, чтобы параметр {section} не принимал значение item

Для большего контроля можно применять ограничители параметров, которsе контролируют их тип, например:

@page "/catalog/{section:alpha:minlength(3):maxlength(8)}/{item:alpha:minlength(3):maxlength(15)}"

📘 Справочник по ограничениям маршрутов

  • Использование дефиса в маршрутах:
    Если дефис используется в параметрах маршрута, то всё работает. В примеры выше, допустимы дефисы для параметров {section}, {item}, но уже нельзя применить ограничение alpha {section:alpha}:
@page "/catalog/{section}/{item}"
допустимы маршруты с дефисами:
/catalog/section-first/item-some

Если вы хотите использовать дефис для названий страниц, то надо написать код. См. документацию ниже:
Изменение маршрутов страницы (learnrazorpages.com)
Дефисы в имени файла(stackoverflow.com)

Перенаправление

В зависмости от параметров, вернуть страницу, или сделать, например редирект:

        public IActionResult OnGet(string section)
        {
            if (string.IsNullOrEmpty(section))
            {
                return LocalRedirectPermanent("/"); 
            }

            return Page();
        }

🟢 Возвращение результата в Razor Pages
Результаты действий в Razor Pages