路由约束在传入 URL 发生匹配时执行,URL 路径标记为路由值。 路径约束通常检查通过路径模板关联的路径值,并对该值是否为可接受做出对/错决定。 某些路由约束使用路由值以外的数据来考虑是否可以路由请求。 例如,HttpMethodRouteConstraint 可以根据其 HTTP 谓词接受或拒绝请求。 约束用于路由请求和链接生成。
警告
请勿将约束用于输入验证。 如果约束用于输入验证,则无效的输入将导致 404
(找不到页面)响应。 无效输入可能生成包含相应错误消息的 400
错误请求。 路由约束用于消除类似路由的歧义,而不是验证特定路由的输入。
下表演示示例路由约束及其预期行为:
约束 | 示例 | 匹配项示例 | 说明 |
---|---|---|---|
int |
{id:int} |
123456789 , -123456789 |
匹配任何整数 |
bool |
{active:bool} |
true , FALSE |
匹配 true 或 false 。 不区分大小写 |
datetime |
{dob:datetime} |
2016-12-31 , 2016-12-31 7:32pm |
在固定区域性中匹配有效的 DateTime 值。 请参阅前面的警告。 |
decimal |
{price:decimal} |
49.99 , -1,000.01 |
在固定区域性中匹配有效的 decimal 值。 请参阅前面的警告。 |
double |
{weight:double} |
1.234 , -1,001.01e8 |
在固定区域性中匹配有效的 double 值。 请参阅前面的警告。 |
float |
{weight:float} |
1.234 , -1,001.01e8 |
在固定区域性中匹配有效的 float 值。 请参阅前面的警告。 |
guid |
{id:guid} |
CD2C1638-1638-72D5-1638-DEADBEEF1638 |
匹配有效的 Guid 值 |
long |
{ticks:long} |
123456789 , -123456789 |
匹配有效的 long 值 |
minlength(value) |
{username:minlength(4)} |
Rick |
字符串必须至少为 4 个字符 |
maxlength(value) |
{filename:maxlength(8)} |
MyFile |
字符串不得超过 8 个字符 |
length(length) |
{filename:length(12)} |
somefile.txt |
字符串必须正好为 12 个字符 |
length(min,max) |
{filename:length(8,16)} |
somefile.txt |
字符串必须至少为 8 个字符,且不得超过 16 个字符 |
min(value) |
{age:min(18)} |
19 |
整数值必须至少为 18 |
max(value) |
{age:max(120)} |
91 |
整数值不得超过 120 |
range(min,max) |
{age:range(18,120)} |
91 |
整数值必须至少为 18,且不得超过 120 |
alpha |
{name:alpha} |
Rick |
字符串必须由一个或多个字母字符组成,a -z ,并区分大小写。 |
regex(expression) |
{ssn:regex(^\\d{{3}}-\\d{{2}}-\\d{{4}}$)} |
123-45-6789 |
字符串必须与正则表达式匹配。 请参阅有关定义正则表达式的提示。 |
required |
{name:required} |
Rick |
用于强制在 URL 生成过程中存在非参数值 |
例:
[Route("users/{id:int:min(1)}")] public User GetUserById(int id) { }
源:https://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/routing?view=aspnetcore-6.0
标签:core,匹配,web,请参阅,约束,length,api,min,路由 From: https://www.cnblogs.com/yyd-sun/p/16997652.html