【发布时间】:2012-06-14 15:42:10
【问题描述】:
我的 MVC 路由有问题。
我正在尝试访问以下网址...“http://localhost/api/Countries”
我已经按以下顺序定义了以下路线...
RouteTable.Routes.MapHttpRoute(
name: "Continents",
routeTemplate: "api/countries/Continents",
defaults: new { controller = "countries", Action="Continents" }
);
RouteTable.Routes.MapHttpRoute(
name: "CountryRegions",
routeTemplate: "api/countries/Regions",
defaults: new { controller = "countries", Action = "CountryRegions" }
);
RouteTable.Routes.MapHttpRoute(
name: "CountryByCodeApi",
routeTemplate: "api/{controller}/{countryCode}",
defaults: new { controller="countries", countryCode = System.Web.Http.RouteParameter.Optional }
);
每当我转到所需的 URL 时,我都会收到错误消息“找到与请求匹配的多个操作”。如果 routeTemplate 属性的第三段是可选的,这将是有意义的,但我的理解是,通过不将它括在大括号中,它使其成为目标中的 required 段网址。显然“http://localhost/api/countries”不包括“大陆”或“地区”,那么为什么它们会被识别为与请求匹配。
你知道的。这些路线看起来很简单,但当你真正理解它时,它就像 RegEx 一样神秘!!!
有什么想法吗?
【问题讨论】:
标签: asp.net-mvc model-view-controller asp.net-mvc-routing