Blazor-路由模板(下)

embedded/2025/3/6 7:11:33/

路由约束

类型约束

我们这里使用{id:int}限制路由,id为int类型,并且路由参数 id 对应的 Id 属性也必须是 int 类型。我们试试能否正常访问

@page "/demoPage/{id:int}"
<h3>demoPage</h3>
<h2>路由参数Id:@Id</h2>
@code {[Parameter]public int Id { get; set; }
}

在这里插入图片描述

int类型路由可以正常访问
在这里插入图片描述

使用字符串无法访问到该路由

常见类型约束

在这里插入图片描述

函数约束

路由模板中,可以执行函数,用来验证路由参数值是否符合约束要求。
我们在这里为id添加了约束{id:max(100)}

@page "/demoPage/{id:max(100)}"
<h3>demoPage</h3>
<h2>路由参数Id:@Id</h2>
@code {[Parameter]public int Id { get; set; }
}

运行结果
在这里插入图片描述

运行后我们发现发生了报错,这是因为
使用@page 指令指定路由模板,则所有函数约束所应用的路由参数必须是 string 类型,框架不提供强制自动转换。
我们修改为string试试效果如何

@page "/demoPage/{id:max(100)}"
<h3>demoPage</h3>
<h2>路由参数Id:@Id</h2>
@code {[Parameter] public string Id { get; set; } = null!;
}

在这里插入图片描述
在这里插入图片描述

这次运行正常了,并且超出路由限制的无法访问

catch-all 路由

@page "/demoPage/{*AnyRoute}"
<h3>demoPage</h3>
<h2>路由参数:@AnyRoute</h2>
@code {[Parameter] public string? AnyRoute { get; set; }
}

定义的 AnyRoute 参数属性为任意路由参数,必须为 string 类型。
在路由模板中,要在任意路由参数前面使用 * 通配符,并放在{}内,如{*AnyRoute}。

获取路由查询参数

当路由中携带查询参数时,如路由/demoPage?a=abc&b=4,遇到这类参数时,我们需要使用[SupplyParameterFromQuery]特性标记变量来获取参数

@page "/demoPage"
<h3>demoPage</h3>
<h2>路由查询参数:@A</h2>
<h2>路由查询参数:@B</h2>
@code {[SupplyParameterFromQuery] public string? A { get; set; }[SupplyParameterFromQuery] public string? B { get; set; }
}

在这里插入图片描述

如上的方式就可以获取参数a,b的值

查询参数别名

我们还可以通过设置别名的方式,对查询参数进行获取,以应对参数查询名称和我们想声明的变量名称不一致的情况。
这样的方式我们仍然可以读取到参数

@page "/demoPage"
<h3>demoPage</h3>
<h2>路由查询参数:@Parameter</h2>
<h2>路由查询参数:@B</h2>
@code {[SupplyParameterFromQuery(Name = "a")] public string? Parameter { get; set; }[SupplyParameterFromQuery] public string? B { get; set; }
}

在这里插入图片描述

数组查询参数

我们将参数直接使用数组进行接收即可,如下

@page "/demoPage"
<h3>demoPage</h3>
<h2>路由查询参数:</h2>
@if (Parameter is not null)
{<ul>@foreach (var item in Parameter){<p>@item</p>}</ul>}
<h2>路由查询参数:@B</h2>
@code {[SupplyParameterFromQuery(Name = "a")] public string[]? Parameter { get; set; }[SupplyParameterFromQuery] public string? B { get; set; }
}

在这里插入图片描述


http://www.ppmy.cn/embedded/170424.html

相关文章

人工智能直通车系列02【Python 基础与数学基础】(控制流线性代数:向量基本概念)

目录 向量基本概念 场景示例 向量基本概念 定义&#xff1a;在数学中&#xff0c;向量&#xff08;也称为欧几里得向量、几何向量、矢量&#xff09;是具有大小和方向的量。它可以形象化地表示为带箭头的线段&#xff0c;箭头所指代表向量的方向&#xff0c;线段长度代表向量…

多线程-线程本地变量ThreadLocal

简介 ThreadLocal是线程本地变量&#xff0c;用于存储独属于线程的变量&#xff0c;这些变量可以在同一个线程内跨方法、跨类传递。每一个ThreadLocal对象&#xff0c;只能为当前线程关联一个数据&#xff0c;如果要为当前线程关联多个数据&#xff0c;就需要使用多个ThreadLo…

Tick数据20241224

Tick数据20241224 商品和金融期货level2高频数据&#xff08;一秒四次&#xff09;下载 链接: https://pan.baidu.com/s/144ewl4T0dQvrAedhLz8uJw?pwdc33h 提取码: c33h通过历史Level2一秒四次高频数据深层次分析交易可以分析出比较活跃的品种一&#xff1a;m2505 (1)在11:1…

机器学习—赵卫东阅读笔记(一)

第一章&#xff1a;机器学习基础 1.1.2 机器学习主要流派 1.符号主义 2.贝叶斯分类——基础是贝叶斯定理 3.联结主义——源于神经学&#xff0c;主要算法是神经网络。——BP算法&#xff1a;作为一种监督学习算法&#xff0c;训练神经网络时通过不断反馈当前网络计算结果与…

物联网感应层设备的通信协议及数据上传路径详解

以下是物联网感应层设备的通信协议及数据上传路径详解&#xff0c;包含典型技术方案和实际应用案例&#xff1a; 一、通信协议矩阵 短距离传输&#xff08;<100m&#xff09; 协议类型技术特性典型设备应用场景BLE 5.22Mbps速率&#xff0c;mesh组网可穿戴设备医疗手环连接…

剑指 Offer II 059. 数据流的第 K 大数值

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20059.%20%E6%95%B0%E6%8D%AE%E6%B5%81%E7%9A%84%E7%AC%AC%20K%20%E5%A4%A7%E6%95%B0%E5%80%BC/README.md 剑指 Offer II 059. 数据流的第 K 大数值 题目描述 设…

JavaWeb XML

1、定义 EXtension markup language XML&#xff1a;可扩展自定义标记语言 2、XML的存在意义和用法 XML存在约束&#xff0c;可以自定义但也存在书写规则&#xff0c;一般不需要逐行书写。 我们使用XML&#xff0c;只需要基于第三方应用程序和已提供框架的配置文件进行修改…

SpringBoot项目集成ElasticSearch

1. 项目背景 处于失业找工作的阶段&#xff0c;随便写写吧~ 没啥背景&#xff0c;没啥意义&#xff0c;Java后端越来越卷了。第一学历不是本科&#xff0c;感觉真的是没有一点路可走。 如果有路过的小伙伴&#xff0c;如果身边还有坑位&#xff0c;不限第一学历的话&#xff0…