Blazor 路由参数类型约束使用教程
发布时间 - 2026-02-01 00:00:00 点击率:次Blazor路由参数类型约束可提前拦截非法URL,避免运行时异常;需在@page中声明约束(如{id:int}),组件参数类型必须严格匹配,支持基础类型、函数约束、可选参数及通配符捕获。
Blazor 路由参数类型约束能帮你提前拦截非法 URL,避免运行时类型转换失败或逻辑异常。关键在于:约束写在 @page 模板里,而组件参数类型必须严格匹配约束要求。
基础类型约束(如 int、bool、guid)
直接在路由占位符后加冒号和类型名,例如 {id:int}。框架会自动尝试将 URL 中的字符串转为对应类型,失败则不匹配该路由(跳转到 NotFound 页面)。
-
@page "/product/{id:int}"要求 URL 必须是/product/123这类整数结尾,/product/abc或/product/12.5都不会命中 - 组件中对应参数必须声明为
public int Id { get; set; },不能是string或可空int?(除非你用可选参数 + 默认值逻辑) - 常见支持类型包括:
int、long、bool、datetime、guid、float、double
函数约束(如 max、min、regex)
函数约束只接受 string 类型的参数,框架不会自动转换。它是在字符串层面做验证,不是类型转换。
- 写法示例:
@page "/user/{name:regex(^[a-zA-Z]{2,20}$)}",限制 name 只能是 2–20 个英文字母 - 数值范围约束如
{id:max(100)},实际接收的是string,但值必须能解析为 ≤100 的整数(否则不匹配) - 组件属性必须是
public string Name { get; set; },否则编译或运行时会出错 - 多个约束可叠加,比如
{id:int:min(1):max(999)},但注意int是类型约束,min/max是函数约束,顺序不影响效果
可选参数与默认值处理
在参数名后加问号 ? 表示可选,URL 中可以省略该段。但组件仍需提供合理默认值,否则可能为 null 或 0。
- 写法:
@page "/profile/{username?}",允许访问/profile或/profile/john - 参数属性建议设为可空或带默认值,例如
public string Username { get; set; } = "guest"; - 推荐在
OnParametersSet中设置默认值,因为该方法每次参数变化都会触发,比OnInitialized更可靠
通配符捕获(catch-all)
用 {*path} 捕获 URL 剩余全部路径段,适合构建动态嵌套路由或代理页面。
- 写法:
@page "/docs/{*slug}",可匹配/docs/intro、/docs/api/v1/users/list等任意深度 - 对应参数必须是
string类型,且允许为null,例如public string? Slug { get; set; } - 注意:catch-all 参数必须放在模板末尾,且一个路由只能有一个
基本上就这些。约束不是装饰,它直接影响路由是否生效,写完记得测试各种非法输入——比如故意输个字母进 {id:int},看是不是真跳 404。
# 路由
# String
# Float
# NULL
# catch
# 字符串
# bool
# int
# double
# public
# Regex
# 类型转换
# 可选
# 默认值
# 后加
# 的是
# 不匹配
# 是在
# 放在
# 多个
# 设为
# 帮你
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何确认建站备案号应放置的具体位置?
如何在Windows虚拟主机上快速搭建网站?
文字头像制作网站推荐软件,醒图能自动配文字吗?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
Laravel怎么在Blade中安全地输出原始HTML内容
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
如何有效防御Web建站篡改攻击?
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
如何安全更换建站之星模板并保留数据?
Laravel怎么判断请求类型_Laravel Request isMethod用法
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门
如何在Tomcat中配置并部署网站项目?
Laravel用户密码怎么加密_Laravel Hash门面使用教程
Laravel如何处理异常和错误?(Handler示例)
如何在Windows服务器上快速搭建网站?
Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作
如何在宝塔面板创建新站点?
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
如何在阿里云虚拟主机上快速搭建个人网站?
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
JavaScript中的标签模板是什么_它如何扩展字符串功能
Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程
成都网站制作公司哪家好,四川省职工服务网是做什么用?
Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】
太平洋网站制作公司,网络用语太平洋是什么意思?
手机软键盘弹出时影响布局的解决方法
网页设计与网站制作内容,怎样注册网站?
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
如何在宝塔面板中创建新站点?
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
WEB开发之注册页面验证码倒计时代码的实现
JavaScript如何实现继承_有哪些常用方法
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
高防服务器租用如何选择配置与防御等级?
Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询
如何快速上传自定义模板至建站之星?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
lovemo网页版地址 lovemo官网手机登录
如何彻底删除建站之星生成的Banner?
如何在阿里云域名上完成建站全流程?
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
Linux安全能力提升路径_长期防护思维说明【指导】
香港服务器网站推广:SEO优化与外贸独立站搭建策略
利用python获取某年中每个月的第一天和最后一天
Python正则表达式进阶教程_复杂匹配与分组替换解析
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
上一篇:FineBI系统管理应用解析
下一篇:玻璃拼音怎么拼?
上一篇:FineBI系统管理应用解析
下一篇:玻璃拼音怎么拼?


