6

Stiamo utilizzando il progetto ASP.NET MVC Futures (Microsoft.Web.Mvc) per consentire a un'applicazione MVC 3 di utilizzare route RESTful. Questa applicazione ha funzionato perfettamente in MVC 1 e il relativo assembly System.Web.Mvc.Resources.dll per la stessa funzionalità.ASP.NET MVC 3 RESTful Routing: RouteData deve contenere un elemento denominato Action?

Stiamo registrando i percorsi in quanto tale:

routes.MapResourceRoute("MyController", "{MyItemId}"); 

Il che ci dovrebbe dare itinerari come:

/MyController 
/MyController/{MyItemId} 
/MyController/{MyItemId}/EditForm 
/MyController/CreateForm 

otteniamo tre dei quattro percorsi che sono validi - la seconda in quella lista (/ MyController/{} MyItemId) restituisce un errore:

Server Error in '/' Application. 
The RouteData must contain an item named 'action' with a non-empty string value. 

Quando provo aggiungendo action = Dettagli o OTH? er modi di iniettare un parametro di azione nell'URL, ottengo 404 errori. Sembra che l'attributo WebEnabledApi nel codice Futures sia cambiato in modo significativo - chiunque abbia questi problemi e abbia una soluzione?

risposta

1

Il percorso predefinito è basato su "controller/action/id", poiché stai passando l'id e non l'azione, ti darà 404 errori.

routes.MapRoute("Default", "{controller}/{action}/{id}", 
      new 
      { 
       controller = "Home", 
       action = "Index", 
       id = UrlParameter.Optional 
      }); 

Credo che stai cercando di chiamare l'azione dettagli.

Se si dispone di un'azione sul controller, utilizzando il percorso di default potrebbe funzionare:

MyController/Details/{MyItemId}