Используя ASP. NET Core 3 Razor Pages, предположим, что вы хотите настроить страницы со следующей структурой URL:
http://contoso.com/course/4231/details
http://contoso.com/course/4231/students
, где 4231 - идентификатор курса. Это может быть достигнуто с помощью директивы @page
:
@page "/course/{courseId}/details"
Теперь предположим, что вы хотите создать ссылки между страницами /details
и /students
. Затем вы хотите, чтобы параметр courseId
был добавлен к каждой ссылке, что может быть выполнено с помощью помощника тега привязки следующим образом:
<a asp-page="./students" asp-route-courseid="@RouteData.Values["courseId"]>Students</a>
Насколько я понял, в ASP. NET Core 2.1 и более ранние версии не было необходимости добавлять атрибут asp-route-*
для этой цели, потому что значения маршрута будут «распространяться» на другие страницы, автоматически добавляясь к любому тегу привязки, если не будет переопределено вручную («значения окружающего маршрута») как это называлось). Это, по-видимому, было удалено в версии 2.2, но я не совсем уверен, почему.
Необходимость всегда помнить о том, что нужно вручную распространять значения маршрутов с использованием вышеуказанной схемы, кажется очень подверженным ошибкам рабочим процессом и может выйти из Быстро, если у вас есть много значений маршрута, которые всегда нужно добавлять в теги привязки.
Можно ли вручную включить значения окружающего маршрута в более поздних версиях ASP. NET Core, как минимум по индивидуальным параметрам? Есть ли причина не делать этого?
По сути, я бы хотел, чтобы помощники тегов привязки были относительными, так что простая ссылка на ./students
из /course/4231/details
автоматически преобразуется в /course/4231/details
.