Как параметр маршрута присваивает значение свойству в Blazor?
Ниже приведен блок кода - документация Blazor. Но я не могу понять, как и на каком основании параметр маршрута text присваивает значение свойству Text.
@page "/RouteParameter"
@page "/RouteParameter/{text}"
<h1>Blazor is @Text!</h1>
@code {
[Parameter]
public string Text { get; set; }
protected override void OnInitialized()
{
Text = Text ?? "fantastic";
}
}
2 ответа
TL;DR
Blazor сопоставляет параметр маршрута со свойствами, игнорируя регистр слова.
Blazor получает все параметры из маршрута и все свойства из вашего класса и назначает его, игнорируя регистр.
Итак, нижний регистр text
переходит в Text
.
Это тоже сработает
@page "/RouteParameter"
@page "/RouteParameter/{Text}" // upper case Text
<h1>Blazor is @Text!</h1>
@code {
[Parameter]
public string Text { get; set; }
protected override void OnInitialized()
{
Text = Text ?? "fantastic";
}
}
Но поскольку обычно URL-адрес не имеет верхнего регистра, а свойства C# начинаются с верхнего регистра, возможно, это сравнение игнорирует регистр.
Больше чтения!
Документация Blazor, которую вы читали, не предназначена для объяснения ВСЕЙ маршрутизации. Это только объясняет, как Blazor использует маршрутизацию ASP.NET Core.
Привязка к маршрутизации ASP.NET Core
В файле Startup.cs вашего Blazor Web App вы увидите что-то вроде следующего:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
});
MapBlazorHub()
вот как Blazor связан с маршрутизацией ядра ASP.NET.
Маршрутизация Blazor использует тот же маршрутизатор, что и страницы MVC и Razor.
Пример:
MVC -> [Route("customer/{id:int}")]
(атрибут на контроллере)
Razor Pages -> @page "/customer/{id:int}"
(директива страницы)
Blazor -> @page "/customer/{id:int}"
(директива страницы)
Шаг за шагом
Пример маршрута: @page "/customer/{id:int}"
- Маршрут проходит конечный пользователь
- URL-адрес соответствует конечной точке маршрутизатором ASP.NET Core.
- URL-адрес токенизируется в значения маршрута
- В
"{id:int}"
обрабатываются ограничениями маршрута, принимаются или отклоняются, и в этом случае преобразуются в строго типизированныйint
- Значения маршрута упаковываются и передаются вашему коду (контроллеру, компоненту и т. Д.), И он предоставляет идентификатор клиента
1
в качестве параметра.
Предупреждение: это высокий уровень и упущение некоторых ключевых моментов, продолжайте читать Подробнее о маршрутизации ASP.NET Core