我正在使用Visual Studi0 2010.在我的WebApiConfig.cs
文件中,我有以下配置,我可以映射这两个网址/Values
和/Values/1
。它工作正常。
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new {id= RouteParameter.Optional }
);
由于我想使用/Values/Machines
和/Values/Machines/100
这样的自定义网址,因此我将上述设置更改为以下设置。
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new {action="get", id= RouteParameter.Optional }
);
现在,除了这个/Values/1
之外,它现在映射到网址下方。请让我知道我错过了什么。
1./Values
2./Values/Machines
3./Values/Machines/100
感谢。
答案 0 :(得分:2)
这是预期的行为。根据您的新Route,第一个参数Values
应该是Controller名称,第二个参数1
应该是一个Action,但是您没有名为{{1的操作}}
为了获得行动,你需要带有新路线的网址如下:1
你可以这样做:
/Values/Index/1
在这种情况下,如果网址如下:routes.MapRoute(
name: "IndexWithParam",
url: "{controller}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
constraints: new { id = @"\d+" }
);
routes.MapRoute(
name: "Default", // Route name
url: "{controller}/{action}/{id}", // URL with parameters
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
,它会点击第一条路线并将其重定向到/Values/1
。请注意,我在此路线上设置了一个约束,以确保第二个参数是一个数字。