2011-07-10 8 views
20

Piszę kontroler MVC, gdzie muszę obsłużyć zarówno powrót danych, jak i długiej ankiety "dane się zmieniły", jak zachowanie z adresu SAME (!). Nic nie mogę na to poradzić - wdrażam proxy dla już istniejącej aplikacji, więc nie mam sposobu na żadne rozszerzenia/modyfikacje API.MVC: Route Get/Post dla różnych kontrolerów. W jaki sposób?

Mój główny problem to: * Operacje POST muszą zostać zakończone natychmiast. * Operacje GET trwają dłużej (czasami może to zająć kilka godzin).

Czy mogę w jakiś sposób przepisać oba, aby przejść do różnych kontrolerów? Alternatywą byłoby ... hm ... zrobić oba asynchroniczne, tylko POST kończy się na prawo trzy, a potem.

Ktoś ma jakieś uwagi na ten temat?

Odpowiedz

44

Powinieneś być w stanie używać ograniczeń na poziomie routingu, aby kontrolować, do którego kontrolera/działania dociera adres 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

Thanks a lot;) To jest to, czego mi brakuje;) – TomTom

+0

Jeżeli każda linia jest odpowiednio prefiksem "Nazwa:", "URL", "Domyślne:" => co ty prefiks „nowa {httpMethod ... "jest zgodny z? –

+1

@full_prog_full Prefix jest po prostu nazwą parametru w deklaracji metody, która w tym przypadku jest "ograniczeniami". – infiniteRefactor

Powiązane problemy