ASP.NET Core 中实现自定义路由约束
admin
2022-02-28ASP.NET Core 中实现自定义路由约束
导航:
在此视频中,我们将讨论在ASP.NET Core中创建自定义路由约束。
我们在之前的视频中讨论了内置路由约束。如果这些内置路由约束不满足您的应用程序要求,则可以创建自定义路由约束。
在ASP.NET Core中创建自定义路由约束
要创建自定义路由约束实现IRouteConstraint接口,此接口在Microsoft.AspNetCore.Http命名空间中。
IRouteConstraint接口只有一种方法Match()
,继承后必须为其提供实现。如果满足约束,则此方法返回true,否则返回false。
IRouteConstraint Match()方法参数
参数 | 说明 |
---|---|
httpContext | 包含有关HTTP请求的信息 |
route | 该约束所属的路由 |
routeKey | 包含route参数的名称 |
values | 包含route参数值的字典 |
routeDirection | 它是一个对象,告知ASP.NET Core 路由是否从HTTP请求中处理url或者生成url。 |
自定义路由约束实现
假设在我们的项目中,我们只希望允许偶数作为有效的学生ID值。
目前内置的路由约束均无法满足业务需求,所以无法强制执行此操作。 所以只能通过创建自定义约束的形式来实现它。
以下自定义EvenConstraint
路由约束,判断学生Id是否为偶数,如果是则返回true,如果学生id值否则为false。
注册自定义约束
要使用自定义路由约束,必须将其注册到我们应用程序的ConstraintMap字典中。我们在Startup类的ConfigureServices()方法中执行此操作。
使用自定义路由约束
一旦注册了自定义路由约束,就可以像使用任何内置路由约束一样使用它。