2011-07-10 30 views
20

我正在寫一個MVC控制器,我需要同時處理數據返回以及長時間輪詢「數據已經改變」,如來自同一個(!)網址的行爲。 NothingI可以做到這一點 - 我正在爲已經存在的應用程序實現代理,所以我無法對API進行任何擴展/修改。MVC:路由獲取/發佈到不同的控制器。怎麼樣?

我的主要問題是: * POST操作必須立即完成。 * GET操作需要更長的時間(有時需要幾個小時)。

我可以以某種方式重寫都去不同的控制器?另一種方法是......嗯......使兩個異步,只是POST完成右三,然後。

任何人對此有何評論?

回答

44

您應該能夠在路由級別使用約束來控制url轉到的控制器/操作。 ,「URL」,「默認」 =>你有什麼前綴「新:

routes.MapRoute(
    "route that matches only GETs for your url", 
    "your url", 
    new { controller = "some controller", action = "some action" }, 
    new { httpMethod = new HttpMethodConstraint("GET") } 
); 

routes.MapRoute(
    "route that matches only POSTs for your url", 
    "your url", 
    new { controller = "some other controller", action = "some other action" }, 
    new { httpMethod = new HttpMethodConstraint("POST") } 
); 
+0

非常感謝;)這就是我失蹤了) – TomTom

+0

如果每一行分別與「名」爲前綴{httpMethod ...「與? –

+1

@full_prog_full前綴只是方法聲明中參數的名稱,在這種情況下是'constraints'。 – infiniteRefactor