2011-07-10 3 views
20

私は両方の処理が必要なMVCコントローラを作成しています。データの返りと同様に、長いポーリングの "データが変更されました"というSame(!)URLの動作と同様です。これについては何もできません。既存のアプリケーションのプロキシを実装しているため、APIを拡張/変更する方法はありません。MVC:異なるコントローラへのルーティング/ポスト。どうやって?

私の主な問題は: * POST操作はすぐに完了する必要があります。 * GET操作に時間がかかります(時には時間がかかることがあります)。

どういうわけか両方のコントローラを別のコントローラに書き換えることはできますか?別の方法は、... hm ...両方の非同期を作成するだけです。ちょうどPOSTが正しい3回終了しています。

誰でもコメントはありますか?

答えて

44

ルーティングレベルで制約を使用して、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

各ラインは、それぞれ「名前:」が付いている場合は、「URL:」、「デフォルト:」=>あなたは「新しいを何の前に付けますか{httpMethod ... "行は? –

+1

@full_prog_fullプレフィックスは、メソッド宣言のパラメータの名前です。この場合は 'constraints'です。 – infiniteRefactor