Blazor University (23)路由 —— 路由参数

原文链接:https://blazor-university.com/routing/route-parameters/

路由参数

源代码[1]

到目前为止,我们已经了解了如何将静态 URL 链接到 Blazor 组件。静态 URL 只对静态内容有用,如果我们希望同一个组件根据 URL 中的信息(例如客户 ID)呈现不同的视图,那么我们需要使用路由参数。

在添加组件的 @page 声明时,通过将其名称包装在一对 { 大括号 } 中来在 URL 中定义路由参数。

@page "/customer/{CustomerId}

捕获参数值

捕获参数的值就像添加具有相同名称的属性并用 [Parameter] 属性装饰它一样简单。

@page "/"
@page "/customer/{CustomerId}"<h1>Customer:@if (string.IsNullOrEmpty(CustomerId)){@:None}else{@CustomerId}
</h1>
<h3>Select a customer</h3>
<ul><li><a href="/customer/Microsoft">Microsoft</a></li><li><a href="/customer/Google">Google</a></li><li><a href="/customer/IBM">IBM</a></li>
</ul>@code {[Parameter]public string CustomerId { get; set; }
}

请注意,当导航到解析为与当前页面相同类型的组件的新 URL 时,组件不会在导航之前被销毁,并且不会执行 OnInitialized* 生命周期方法。导航被简单地视为对组件参数的更改。

路由参数约束

源代码[2]

除了能够指定包含参数的 URL 模板外,还可以确保 Blazor 仅在参数值满足特定条件时才将 URL 与组件匹配。

例如,在采购订单编号始终为整数的应用程序中,我们希望 URL 中的参数与我们的组件相匹配,以便仅当 OrderNumber 的 URL 值实际上是一个数字时才显示采购订单。

要为参数定义约束,它以冒号后缀,然后是约束类型。例如 :int 只会匹配在正确的位置包含一个有效的整数值的 URL。

@page "/"
@page "/purchase-order/{OrderNumber:int}"<h1>Order number:@if (!OrderNumber.HasValue){@:None}else{@OrderNumber}
</h1>
<h3>Select a purchase order</h3>
<ul><li><a href="/purchase-order/1/">Order 1</a></li><li><a href="/purchase-order/2/">Order 2</a></li><li><a href="/purchase-order/42/">Order 42</a></li>
</ul>@code {[Parameter]public int? OrderNumber { get; set; }
}

约束类型

约束.NET 类型有效值无效值
:boolSystem.Booleantrue
false
1
Hello
:datetimeSystem.DateTime2001-01-01
02-29-2000
29-02-2000
:decimalSystem.Decimal2.34
0.234
2,34
૦.૨૩૪
:doubleSystem.Double2.34
 0.234
2,34
૦.૨૩૪
:floatSystem.Single2.34
0.234
2,34
૦.૨૩૪
:guidSystem.Guid99303dc9-8c76-42d9-9430-de3ee1ac25d0{99303dc9-8c76-42d9-9430-de3ee1ac25d0}
:intSystem.Int32-1
42
299792458
12.34
૨૩
:longSystem.Int64-1
42
299792458
12.34
૨૩

本地化

Blazor 约束当前不支持本地化。

  • 数字只有在 0..9 的形式下才被认为是有效的,而不是来自非英语语言,例如 ૦..૯(古吉拉特语)。

  • 日期仅以 MM-dd-yyyyMM-dd-yy 或 ISO 格式 yyyy-MM-dd 的形式有效。

  • 布尔值必须为 truefalse

不支持的约束类型

Blazor 约束不支持以下约束类型,但希望将来会支持:

  • 贪心参数

    在 ASP.NET MVC 中,可以提供一个以星号开头的参数名称,并捕获包括正斜杠在内的 URL 块。

    /articles/{Subject}/{*TheRestOfTheURL}

  • 正则表达式

    Blazor 当前不支持基于正则表达式约束参数的能力。

  • 枚举

    目前不可能约束参数以匹配枚举的值。

  • 自定义约束

    无法定义自定义类来确定传递给参数的值是否有效。

参考资料

[1]

源代码: https://github.com/mrpmorris/blazor-university/tree/master/src/Routing/CapturingAParameterValue

[2]

源代码: https://github.com/mrpmorris/blazor-university/tree/master/src/Routing/ConstrainingRouteParameters

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287303.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【经典回放】多种语言系列数据结构算法:栈(C版)

本文采用C语言实现栈结构算法并举例应用。 一 栈的基本原理分析 作为栈这种数据结构,数据是进行所谓的先进后出操作,但栈在操作中,并不需要在中间插入删除操作、一般也不需要在进栈数据中查找什么,这种情况下,恰恰是顺序表可以完成的非常好的场合,所以栈经常是用一个简单…

Android之提示android.content.res.Resources$NotFoundException: Resource ID #0x7f08010a

1 问题 在我的oppo机器上面运行一个页面没有奔溃,但是在红米安卓5.1版本运行页面奔溃,奔溃信息如下 /Timeline(11600): Timeline: Activity_launch_request time:61313216 I/WtProcessController( 3721): FOREGROUND INFO: name=com.appsinnova.android.keepshare uid=1023…

《看聊天记录都学不会C语言?太菜了吧》(14)这么神奇?我写了20行代码竟然一行就可以搞定?

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我&#xff0c;若你是真心学习可以送你书籍&#xff0c;指导你学习&#xff0c;给予你目标方向的学习路线&#xff0c;无套路&#xff0c;博客为证。 本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖…

Javascript和android原生互调

最近在做原生和js端的互调的功能&#xff0c;自己改了个demo&#xff0c;给大家讲解下。 先上js代码 <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>方法调用基本流程测试</title> </head> <body> &l…

ice 服务java连接,“先进的互联互通技术”–使用ice联通php和java [part 1 server]

PHP没有中间件&#xff0c;导致了对很多麻烦。比如&#xff0c;对数据库的操作必须要链接数据库&#xff0c;然后做SQL操作。WEB程序直接操作数据库的方法&#xff0c;这样会带来很多人为因素的事故隐患&#xff0c;以及管理上的麻烦&#xff0c;尤其是对大型的网站应用来说。规…

HttpCookie

参考 : http://www.cnblogs.com/fish-li/archive/2011/07/03/2096903.html 上文结尾有提到一个说法 4. HttpRequest.Cookies 与 HttpResponse.Cookies 会有关系&#xff08;很奇怪吧&#xff09;。 微软官网也是这么说的 : https://msdn.microsoft.com/en-us/library/system.we…

Android之BaseQuickAdapter.setOnItemChildClickListener点击死人也没反应的原因

1 问题 用BaseQuickAdapter设置子view点击事件 unInstalledAdapter!!.setOnItemChildClickListener(object: BaseQuickAdapter.OnItemChildClickListener {override fun onItemChildClick(adapter: BaseQuickAdapter<*, *>?, view: View?, position: Int) {var info =…

【经典回放】多种语言系列数据结构算法:栈(C#版)

本文采用C#语言实现栈结构算法并举例应用。 一、C#的栈对象使用 对C#而言,要使用栈是极其简单的事情,因为C#已经有栈对象,所以根本不需要自用再用顺序表构造栈,只需要你会说明、会应用即可。 在C#中栈对象的类型名称是Stack,这是个泛型的对象,所以,你在使用这个对象的时…

美国银行将AI应用于企业应收账款处理

据外媒消息&#xff0c;美国银行&#xff08;Bank of America&#xff09;与Fintech创业公司High Radius达成合作&#xff0c;将人工智能应用于企业应收账款处理。该应用程序专为大型、复杂的公司管理大笔支付业务&#xff0c;因这些公司常常发生回款信息丢失或一方单独收到付款…

在 Kubernetes 上部署 Secret 加密系统 Vault

HashiCorp Vault 是一个基于身份的 Secret 和加密管理系统。Secret 是您想要严格控制访问的内容&#xff0c;例如 API 加密密钥、密码或证书。Vault 提供由身份验证和授权方法控制的加密服务。使用 Vault 的 UI、CLI 或 HTTP API&#xff0c;可以安全地存储和管理对机密和其他敏…

《看聊天记录都学不会C语言?太菜了吧》(15)你学了一节课的函数我5分钟搞定了,还很熟

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我&#xff0c;若你是真心学习可以送你书籍&#xff0c;指导你学习&#xff0c;给予你目标方向的学习路线&#xff0c;无套路&#xff0c;博客为证。 本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖…

【经典回放】多种语言系列数据结构算法:栈(JavaScript版)

本文采用JavaScript语言实现栈结构算法并举例应用。 JavaScript的栈是数组对象中自动提供的,这点如同C#,实际也不需要自己编写什么栈的程序,如果你用: var s=new Array(); 定义一个s的数组,则这个s上将有以下的方法可供使用: 其中:FF: Firefox, IE: Internet Explore…

设计模式(10)-----模板方法模式

模板方法模式(Template Method) 定义 定义了一个操作中的算法的骨架&#xff0c;而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 UML类图 例子 AbstractClass package com.csdhsm.pattemdesign.template;/** * Title: …

Android之提示Caused by: java.lang.UnsupportedOperationException: Binary XML file line #67: You must sup

1 问题 : Caused by: java.lang.UnsupportedOperationException: Binary XML file line #67: You must supply a layout_width attribute. 05-08 16:42:59.322 23038 23038 E AndroidRuntime: at android.content.res.TypedArray.getLayoutDimension(TypedArray.java:7…

SLES修改本地FTP安装源

2019独角兽企业重金招聘Python工程师标准>>> SLES修改本地FTP安装源 一、配置本机FTP............................................................................................................. 1 1.1、安装.............................................…

.NET7 Preview4:重构的返回值TypedResults

为了更好的测试&#xff0c;更好的性能&#xff0c;Preview4带了一个新的请求返回值类型&#xff0c;这个新的类型中封装了所有的Http请求返回状态函数&#xff0c;还包括了返回成功后的几种数据类型&#xff0c;下面列举了几个常用的类型&#xff1a;app.MapGet("/test_o…

MATLAB软件禁用利好,Matlab被禁用?一款国产软件站了出来说:我就是中国的Matlab...

众所周知&#xff0c;前段时间Matlab被禁用&#xff0c;引发了网友们对于国产工业软件落后的诸多思考&#xff0c;比如为什么落后&#xff0c;落后到什么程度&#xff0c;有没有替代品等等。并且从Matlab到EDA&#xff0c;再到CAD等等&#xff0c;甚至工业操作系统等等&#xf…

CMDB资产采集

Paramikoimport paramiko private_key paramiko.RSAKey.from_private_key_file(/home/auto/.ssh/id_rsa) # 创建SSH对象ssh paramiko.SSHClient()# 允许连接不在know_hosts文件中的主机ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 连接服务器ssh.connect(ho…

《看聊天记录都学不会Python到游戏实战?太菜了吧》(3)都说123是字符不是数字

本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新&#xff0c;包括别的语言以及实战都将使用对话的方式进行教学&#xff0c;基础编程语言教学适用于零基础小白&#xff0c;之后实战课程也将会逐步更新。 若…

ArcGIS实验教程:ArcGIS 10.2手把手图文安装教程(经典版)

ArcGIS实验视频教程合集&#xff1a;《ArcGIS实验教程从入门到精通》&#xff08;附配套实验数据&#xff09; ArcGIS许可服务无法启动解决办法&#xff1a;Win10操作系统ArcGIS许可License无法启动的解决方法汇总&#xff08;绝对成功&#xff01;&#xff09; 目录 一、系统…