2013-05-08 39 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]; 
}