Ho un 2 controller, 1 dei quali è WebAPI:Url.Action con percorsi WebAPI e del controller
public class ListController : ApiController
{
public object Remove(string ListId, List<string> ItemIds)
{
//removed
}
}
public class ListController : Controller
{
public object Remove(string ListId, List<string> ItemIds)
{
//removed
}
}
miei percorsi sono registrati nel Global.asax come segue:
WebApiConfig.Register(GlobalConfiguration.Configuration);
RouteConfig.RegisterRoutes(RouteTable.Routes);
mio percorso WebAPI è definito come:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Quando si genera un URL attraverso @ Url.Action ("Rimuovi", "list"), il percorso di quello che ottiene è '/ list/rimuovere'. Mi aspettavo che il percorso WebApi ('/ api/list/remove') fosse selezionato, poiché le rotte di WebApi erano state registrate prima delle altre rotte.
Come posso ottenere @ Url.Action per restituire il percorso WebApi come previsto?
avete il controller WebAPI nello stesso progetto come il controller non di WebAPI? – DavidG
Sì. Gli spazi dei nomi sono qualcosa.Controllers.WebAPI e qualcosa.Controller – Jason
Hai provato a utilizzare '@ Url.RouteUrl' con il nome della route DefaultApi? – py3r3str