2011-07-10 16 views
20

Hem veri işleme hem de SAME (!) Url'den gelen davranış gibi uzun bir "veri değişti" anketi ile uğraşmam gereken bir MVC denetleyicisi yazıyorum. Bununla ilgili bir şey yapamam - Zaten mevcut bir uygulama için bir proxy uyguluyorum, bu yüzden API'ya herhangi bir uzantı/modifikasyon yapmanın hiçbir yolu yok.MVC: Rota Farklı denetleyicilere alın/gönder. Nasıl?

Başlıca sorunum: * POST işlemleri hemen tamamlanmalıdır. * GET işlemleri daha uzun sürer (bazen zaman alabilir).

Her ikisini de farklı denetleyicilere gitmek için yeniden yazabilir miyim? Bu alternatif ... hm ... hem asenkron hem de POST, üçüncüsü bitiriyor.

Bunun hakkında yorum yapan var mı?

cevap

44

URL'lerin hangi denetleyiciye/eyleme geçtiğini denetlemek için yönlendirme düzeyindeki kısıtlamaları kullanabilmeniz gerekir. "Url:", "varsayılan:" => "yeni öneki ne:

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

Çok teşekkürler;;) İşte eksik olan budur) – TomTom

+0

her satır sırasıyla "adıyla" öneki ise {httpMethod ... "ile aynı mı? –

+1

@full_prog_full Önek, bu durumda "kısıtlamalar" olan yöntem bildirimi parametresinin adıdır. – infiniteRefactor