当前位置: 首页 > news >正文

Blazor-路由模板(下)

路由约束

类型约束

我们这里使用{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.dtcms.com/a/52065.html

相关文章:

  • 如何在Spring Boot中读取JAR包内resources目录下文件
  • C++查看动态库导出哪些函数以及动态库导出形式
  • vLLM代码推理Qwen2-VL多模态
  • 华为配置篇-OSPF基础实验
  • 【RabbitMQ】Producer之TTL过期时间 - 基于AMQP 0-9-1
  • 【智能体架构:Agent】LangChain智能体类型ReAct、Self-ASK的区别
  • Sentinel-2哨兵2号数据提取指定区域NDVI值,映射冬小麦苗情分级,并且通过前端直接加载tif文件渲染效果
  • TMS320F28P550SJ9学习笔记3:SCI通信的特性与Sysconfig配置发送功能
  • 001.words and phrases
  • Golang实践录:go发布版本信息收集
  • llm + rag
  • VsCode 快捷键备忘
  • <03.05>Leetcode2
  • 如何为亚马逊季节性产品搭建高效的推广流程?
  • 解决新建小程序页面文字顶在顶部问题
  • CyberDefenders----DanaBot Lab
  • 【Java学习】String类变量
  • 电力设备基础概念解析
  • threejs:用着色器给模型添加光带扫描效果
  • 如何下载安装 PyCharm?
  • Libgdx游戏开发系列教程(5)——碰撞反弹的简单实践
  • 本地部署pangolin获取谱系,从而达到预测新冠的流行趋势
  • NetBeans 8.2 开发 CIFLog3.5 - 创建WelcomeDemo
  • 第十二届蓝桥杯大学A组java省赛答案整理
  • 突破传统:用Polars解锁ICU医疗数据分析新范式
  • Linux的一些配置(网络建设与运维)
  • 数据结构与算法:双指针
  • Unity 文字高度自适应
  • 微信小程序开发 中 “安全区域“
  • 【ubuntu20】--- 搭建 gerrit 最新最详细