MVC Route Contraint不工作(奇数)

时间:2015-11-03 16:01:08

标签: c# asp.net-mvc asp.net-mvc-4

我有以下路线,约束设置为仅允许以“CAR”开头的ID:

    context.MapRoute(
        "Car Detail",
        "AR/Car/{id}",
        new { controller = "Car", action = "Detail", id = UrlParameter.Optional },
        constraints: new { id = @"^CAR" },
        namespaces: new[] { "CarSubmission.Areas.AR.Controllers" }
    );

我正在尝试使用此网址:

www.myapp.com/CarSubmission/AR/Car/CAR223126

但是,当在浏览器中点击此网址时,路由不会参与。有任何想法吗?

这个正则表达式(即“^ CAR”)对于c#是错误的吗?我需要正则表达式来查找“CAR”后面跟着任意数量的数字字符。

3 个答案:

答案 0 :(得分:2)

您无需使用^(或$)进行细分受限制。

尽管如此,你的正则表达式是错误的,因为你不希望在 "CAR"之后有任何字符。

你应该有这样的东西:

CAR\d+

哪个匹配CAR后跟一个或多个数字。

或者:

CAR\d{6}

哪个匹配CAR后跟正好6个数字。

答案 1 :(得分:1)

“^ CAR”不会匹配字符串“CAR”吗?试试@“^ CAR \ d +”

答案 2 :(得分:0)

我认为你的正则表达式是错误的。你所拥有的只是寻找字符串CAR。你需要告诉它匹配最后的数字。试试这个:

^CAR\d*

其中说“匹配以CAR开头的字符串以及之后的任意位数。”