URL中的下划线不使用属性路由

时间:2014-06-24 18:49:02

标签: asp.net-mvc asp.net-mvc-5.1

Visual Studio 2013 IDE中出现以下问题。当部署到IIS时,它似乎正常工作。

我有一个如下所示的属性路径:

    [Route("SiteCode/{sites:alpha?}")] 

当我请求/ SiteCode时,它工作正常。当我包含一个参数,例如/ SiteCode / something时,它也可以正常工作。当URL为/ SiteCode / some_thing时,它找不到控制器,我得到404.

这个在SiteCodes参数中使用下划线:

[Route("Performance/{CountryIDs?}/{StateIDs?}/{SiteCodes?}/{Titles?}/{StartDate:datetime?}/{EndDate:datetime?}")]

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

根据http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2#constraints alpha约束匹配,只有大写和小写的拉丁字符和下划线不是其中之一。

如果要允许下划线,可以使用以下约束:

regex(^[a-zA-Z_]+$)