【问题标题】:MVC Route Contraint not working (odd)MVC 路由约束不起作用(奇数)
【发布时间】:2015-11-03 16:01:07
【问题描述】:

我有以下路线,并设置了一个约束,只允许以“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" }
    );

我正在尝试使用这个 URL:

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

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

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

【问题讨论】:

  • 这条路线是否高于出现在路线配置中的“默认”路线?如果没有,请尝试移动您的路线,使其列在“默认”路线之前。
  • 除了其他人提到的之外,CarSubmission 是您网站的根吗?否则,您的模板也将不匹配。

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


【解决方案1】:

您不需要使用^(或$)进行分段约束。

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

你应该有这样的东西:

CAR\d+

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

或者:

CAR\d{6}

匹配 CAR 后跟 6 个数字。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      ^CAR\d*
      

      这表示“匹配以CAR 开头的字符串,然后是任意数量的数字。”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-02
        • 2013-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-20
        • 1970-01-01
        相关资源
        最近更新 更多