2013-05-08 72 views
1

当我打开我的API控制器时,我期望从我的路由中获取{contract}值。MVC4从ApiController获取路由数据

config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{contract}/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

因此,当用户点击/ API /元研究/过敏/ 1234,我想抓住“元研究”,并用它来获取连接字符串。

this.RouteData.Values["contract"].ToString() 
RouteTable.Routes["contract"] 

有我丢失的东西:

我使用的RouteData和RouteTable像下面没有运气尝试?这在ApiController中是不同的吗?

在此先感谢!

回答

1

你可以抓住这一点,方法参数的......如果你可以改变这些:

[HttpPost] 
[ActionName("ActionName_IfDifferentThanMethodName")] 
public HttpResonseMessage method(string contract, int id) 
{ 
    string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings[contract]; 
}