转载自https://www.cnblogs.com/lgx5/p/10967720.html。
路由约束让我们可以限制模板参数的匹配方式。一般的语法是 "{参数:约束类型}":
[Route("users/{id:int}"] public User GetUserById(int id) { ... } [Route("users/{name}"] public User GetUserByName(string name) { ... }
如果参数int,则选中第一个GetUserById,否则是GetUserByName。(跟方法定义的顺序无关)
下面的表格列出了支持的约束
约束 | 介绍 | 示例 |
---|---|---|
alpha | 匹配大写或小写字母 (a-z, A-Z) | {x:alpha} |
bool | {x:bool} | |
datetime | {x:datetime} | |
decimal | {x:decimal} | |
double | {x:double} | |
float | 匹配一个 32位浮点数 | {x:float} |
guid | {x:guid} | |
int | {x:int} | |
length | 匹配一个长度在指定范围内的字符串 | {x:length(6)} {x:length(1,20)} |
long | {x:long} | |
max | 匹配指定了最大值的整数 | {x:max(10)} |
maxlength | 匹配指定了最大长度字符串 | {x:maxlength(10)} |
min | 匹配指定了最小值的整数 | {x:min(10)} |
minlength | 匹配指定了最小长度字符串 | {x:minlength(10)} |
range | 匹配指定了大小区间的整数 | {x:range(10,50)} |
regex | 匹配一个正则表达式 | {x:regex(^d{3}-d{3}-d{4}$)} |
如果要指定多个约束,需要用冒号间隔 [Route("users/{id:int:min(1)}")]。