2011-07-10 16 views
20

Estoy escribiendo un controlador MVC donde tengo que manejar tanto la devolución de datos como una encuesta larga "los datos han cambiado" como el comportamiento de la MISMA (!) Url. No puedo hacer nada al respecto: estoy implementando un proxy para una aplicación ya existente, por lo que no tengo forma de hacer ninguna extensión/modificación a la API.MVC: ruta Get/Post a diferentes controladores. ¿Cómo?

Mi problema principal es: * Las operaciones de POST deben completarse inmediatamente. * Las operaciones GET toman más tiempo (puede tomar horas a veces).

¿Puedo reescribir de alguna manera ambos para ir a diferentes controladores? La alternativa sería ... hm ... hacer ambos asincrónicos, solo el POST está terminando en el tres correcto y luego.

¿Alguien un comentario al respecto?

Respuesta

44

Debería poder usar restricciones en el nivel de enrutamiento para controlar a qué controlador/acción va la 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

Muchas gracias;) Eso es lo que me estaba perdiendo;) – TomTom

+0

Si cada línea se prefija, respectivamente, con "nombre", "URL", "valores por defecto:" => ¿qué es lo que anteponga el "nuevo {httpMethod ... "line with? –

+1

@full_prog_full Prefijo es solo el nombre del parámetro en declaración de método, que es 'constraints' en este caso. – infiniteRefactor

Cuestiones relacionadas