路由参数如何在 Blazor 中将值分配给 属性?
How route parameter assigns the value to property in Blazor?
下面的代码块是 Blazor 文档。但我无法弄清楚 '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";
}
}
TL;DR
Blazor 通过忽略单词的大小写来匹配路由参数和属性。
Blazor 从路由中获取所有参数并从您的 class 中获取所有属性,并在忽略大小写的情况下对其进行分配。
所以小写 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 核心路由。
绑定到 ASP.NET 核心路由
在您的 Blazor Web 应用程序的 Startup.cs 文件中,您将看到如下内容:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
});
MapBlazorHub()
是 Blazor 连接到 ASP.NET 核心路由的方式。
Blazor 路由使用与 MVC 和 Razor 页面相同的路由器。
示例:
MVC -> [Route("customer/{id:int}")]
(控制器上的属性)
Razor 页面 -> @page "/customer/{id:int}"
(页面指令)
Blazor -> @page "/customer/{id:int}"
(页面指令)
循序渐进
示例路线:@page "/customer/{id:int}"
- 最终用户导航到的路线
- URL 由 ASP.NET 核心路由器
匹配到一个端点
- URL 被标记为路由值
"{id:int}"
被Route Constraints处理,接受或拒绝,在这种情况下,转换为强类型int
- 路由值被打包并提供给您的代码(控制器、组件等),它提供
1
的客户 ID 作为参数。
Warning : this is high level and glossing over some key things, please continue reading More on ASP.NET Core Routing
下面的代码块是 Blazor 文档。但我无法弄清楚 '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";
}
}
TL;DR
Blazor 通过忽略单词的大小写来匹配路由参数和属性。
Blazor 从路由中获取所有参数并从您的 class 中获取所有属性,并在忽略大小写的情况下对其进行分配。
所以小写 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 核心路由。
绑定到 ASP.NET 核心路由
在您的 Blazor Web 应用程序的 Startup.cs 文件中,您将看到如下内容:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
});
MapBlazorHub()
是 Blazor 连接到 ASP.NET 核心路由的方式。
Blazor 路由使用与 MVC 和 Razor 页面相同的路由器。
示例:
MVC -> [Route("customer/{id:int}")]
(控制器上的属性)
Razor 页面 -> @page "/customer/{id:int}"
(页面指令)
Blazor -> @page "/customer/{id:int}"
(页面指令)
循序渐进
示例路线:@page "/customer/{id:int}"
- 最终用户导航到的路线
- URL 由 ASP.NET 核心路由器 匹配到一个端点
- URL 被标记为路由值
"{id:int}"
被Route Constraints处理,接受或拒绝,在这种情况下,转换为强类型int
- 路由值被打包并提供给您的代码(控制器、组件等),它提供
1
的客户 ID 作为参数。
Warning : this is high level and glossing over some key things, please continue reading More on ASP.NET Core Routing