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

在 ASP.NET Core 中创建自定义路由约束,可以让你更精确地控制 URL 路由匹配逻辑。比如你希望某个路由参数必须是有效的邮政编码、手机号或特定格式的字符串,就可以通过自定义约束实现。
自定义路由约束需要实现 IRouteConstraint 接口。该接口只有一个方法 Match,用于判断参数是否符合规则。
例如,创建一个检查参数是否为偶数的约束:
public class EvenNumberConstraint : IRouteConstraint在 Program.cs 或 Startup.cs 中注册这个约束,使其可以在路由模板中使用。
在 Program.cs 的服务配置中添加:
builder.Services.AddSingleton<IRouteConstraint, EvenNumberConstraint>();注册后,你可以在控制器路由或 Razor Pages 中使用这个约束。
例如,在控制器中:
[Route("api/values/{id:even}")] public IActionResult GetById(int id) { return Ok(new { Id = id }); }这样,只有当 id 是偶数时,该路由才会匹配。例如:
也可以用在 MapControllerRoute 或 MapGet 等终结点配置中:
endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id:even?}");自定义约束适合以下场景:
基本上就这些。只要实现接口、注册、并在路由中使用,就能灵活控制路由匹配行为。不复杂但容易忽略的是注册步骤——别忘了加到 ConstraintMap 里。
以上就是ASP.NET Core 中的自定义路由约束如何创建?的详细内容,更多请关注php中文网其它相关文章!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号