新闻中心
ASP.NET Core 中的自定义路由约束如何创建?
创建自定义路由约束需实现IRouteConstraint接口,注册到ConstraintMap,并在路由模板中使用,如{param:even},以精确控制匹配逻辑,常见于格式校验场景。

在 ASP.NET Core 中创建自定义路由约束,可以让你更精确地控制 URL 路由匹配逻辑。比如你希望某个路由参数必须是有效的邮政编码、手机号或特定格式的字符串,就可以通过自定义约束实现。
1. 创建自定义路由约束类
自定义路由约束需要实现 IRouteConstraint 接口。该接口只有一个方法 Match,用于判断参数是否符合规则。
例如,创建一个检查参数是否为偶数的约束:
public class EvenNumberConstraint : IRouteConstraint{
public bool Match(
HttpContext httpContext,
IRouter route,
string routeKey,
RouteValueDictionary values,
RouteDirection routeDirection)
{
if (values.TryGetValue(routeKey, out var value))
{
var parameter = value?.ToString();
if (int.TryParse(parameter, out int number))
{
return number % 2 == 0;
}
}
return false;
}
}
2. 注册自定义约束
在 Program.cs 或 Startup.cs 中注册这个约束,使其可以在路由模板中使用。
在 Program.cs 的服务配置中添加:
builder.Services.AddSingleton// 或者更推荐的方式:注册为具名约束 builder.Services.Configure
3. 在路由中使用自定义约束
注册后,你可以在控制器路由或 Razor Pages 中使用这个约束。
Openflow
一键极速绘图,赋能行业工作流
88
查看详情
例如,在控制器中:
[Route("api/values/{id:even}")] public IActionResult GetById(int id) { return Ok(new { Id = id }); }这样,只有当 id 是偶数时,该路由才会匹配。例如:
- /api/values/4 → 匹配
- /api/values/3 → 404
也可以用在 MapControllerRoute 或 MapGet 等终结点配置中:
endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id:even?}");常见应用场景
自定义约束适合以下场景:
- 验证参数是否为 GUID
- 检查是否是手机号、邮箱、邮政编码等格式
- 限制值在某个枚举范围内(如 {action:in(create,edit,delete)})
- 日期格式校验
基本上就这些。只要实现接口、注册、并在路由中使用,就能灵活控制路由匹配行为。不复杂但容易忽略的是注册步骤——别忘了加到 ConstraintMap 里。
以上就是ASP.NET Core 中的自定义路由约束如何创建?的详细
内容,更多请关注其它相关文章!
# 个性化设置
# 番禺seo网络营销推广哪个好
# 广告 模型网站推广方案
# 邢台手机网站建设报价
# 包头网站seo
# 聊城集团网站建设公司
# 南开网站推广营销招聘
# 北京公司网站建设排名
# seo舞蹈原版
# 图片像素优化网站
# 厦门学营销推广
# 你可以
# 让你
# 编码
# 无线路由器
# 的是
# 一拍
# 拍了拍
# 并在
# 验证码
# 自定义
# .net
# 邮箱
# 路由
# ai
相关栏目:
【
行业资讯67740 】
【
技术百科0 】
【
网络运营39195 】
相关推荐:
5r是多少钱
固态硬盘 如何分区
苹果16哪些型号好用
计数器上power是什么意思
如何检测固态硬盘温度
苹果16自带配件有哪些
win7如何打开命令行窗口
openwrt有哪些功能
如何把u盘改成固态硬盘
春运抢票如何抢连坐的票
学typescript需要多久
油烟机上的power是什么意思
市盈率中的19a是什么意思
什么是typescript
如何用命令下载服务器网站
酷我音乐怎么改每日推荐 酷我音乐每日推荐修改方法
如何查找固态硬盘
手机拍显示屏有条纹怎么去除
typescript如何开发
如何用好typescript
j*a中如何创建列表数组
如何查看固态硬盘速度
台达变频器power灯是什么意思
折叠屏手机哪个卖得最好
闪光灯power闪烁是什么意思
买的5g手机但是没有5g网络怎么办
安卓手机怎么打开5g
j*a整形怎么转数组
如何安装大华固态硬盘
typescript的语法格式是什么
typescript为什么能运行
mac如何使用vi命令
显示器power接口是什么意思
单片机怎么加死循环
如何在一串数字前面去掉四位数的命令
得物怎样降低手续费 得物如何降低手续费教程
单片机怎么判定高电平
ao3镜像网站哪个好
空调控制面板power灯一直亮是什么意思
旧固态硬盘如何卖出
苹果电脑如何输入命令
如何判断固态硬盘端口
一年多少周
如何学好typescript
域名解析后为什么要进行域名备案
2026年将会大爆发的15个新科技
win7怎么取消360显示的壁纸
如何修改cad命令
新版路由器如何设置路由命令
如何用命令打开光驱


2025-09-26
浏览次数:次
返回列表