Blazor_WASM之4:路由
创始人
2024-05-30 18:07:46
0次

Blazor_WASM之4:路由

路由模板

通过 Router组件可在 Blazor 应用中路由到 Razor 组件。 Router 组件在 Blazor 应用的 App 组件中使用。App组件模板如下

Sorry, there's nothing at this address.

在运行时,RouteView组件有两个作用:

  • 从 Router 接收 RouteData(例如/test)以及所有路由参数。
  • 使用指定的组件的布局来呈现该组件,包括任何后续嵌套布局。

组件支持使用多个 @page 指令,/blazor-route和/different-blazor-route都能跳转到该界面

@page "/blazor-route"
@page "/different-blazor-route"

Blazor routing

也可以将@page替换成@attribute

@page "/test"
@attribute [Route("test")]

重要:想要正确解析URL,必须在中包含,也就是在wwwroot中的index.html中中包含。

......

元素聚焦

切换到指定页面后,可以将UI焦点设置到指定元素。

当 Router 组件导航到新页面时,FocusOnNavigate组件将焦点设置到页面的顶层标题 (

)。

NotFound

如果找不到所请求路由的内容,则 Router组件允许应用指定自定义内容

Sorry

Sorry, there's nothing at this address.

路由参数

路由器使用相同的路由参数名称来填充组件参数,且路由参数不区分大小写。

@page "/test/{name}"

Test

传入的参数是:@Name

@code {[Parameter]public string? Name{ set;get; } }

在地址栏中填写/test/哈哈哈

image-20230308102203841

但是,如果地址栏只写/test,也就是不写参数,则会出现

image-20230308102326706

改写为@page "/test/{name?}",name则变成可选参数,地址栏仍然只写/test,则会出现

image-20230308102507905

路由约束

路由约束强制在路由段和组件之间进行类型匹配,例如只允许id为int类型

@page "/user/{Id:int}"

User Id: @Id

@code {[Parameter]public int Id { get; set; } }

路由约束类型

image-20230308103322593

路由约束也可以使用可选参数,比如下面的Id是必须,option是可选

@page "/user/{Id:int}/{Option:bool?}"

CatchAll路由参数

如果想把/test/a/b/c中/test/后面的内容全部当做参数,则可以使用/test/{*par}来进行提取。

@page "/catch-all/{*pageRoute}"@code {[Parameter]public string? PageRoute { get; set; }
}

查询字符串

查询字符串的样式如/test?name=tom&age=18,?后面的内容就是查询字符串,查询字符串支持的类型有bool, DateTime, decimal, double, float, Guid, int, long, string。使用方法如下:

@page "/test"

Test

姓名:@Name

年龄:@Age

性别:@(MyProperty)

@code {[Parameter][SupplyParameterFromQuery]public string? Name{ set;get; }[Parameter][SupplyParameterFromQuery]public int? Age { set; get; }[Parameter][SupplyParameterFromQuery]public bool Gender { set; get; }public string MyProperty{get { return Gender?"男":"女"; }} }

在地址栏输入.../test?name=Tom&age=18&gender=true

image-20230308114308555

SupplyParameterFromQuery的Name属性可以指定查询参数的名字,下面是一个将查询参数放到同一个数组的案例:

@page "/test"

Test

@foreach (var item in stars) {

@item

}@code {[Parameter][SupplyParameterFromQuery(Name ="star")]public string[]? stars { set; get; }}

在地址栏输入.../test?star=a&star=b&star=c

image-20230308115557316

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...