我有2个控制器,其中1是的WebAPI:Url.Action用的WebAPI和控制器路由
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
}
}
我的路线被登记在Global.asax如下:
WebApiConfig.Register(GlobalConfiguration.Configuration);
RouteConfig.RegisterRoutes(RouteTable.Routes);
我的WebAPI路线定义为:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
当生成通过@ Url.Action( “删除”, “列表”)的URL,我得到的路径是 '/列表/删除'。我预计WebApi路由('/ api/list/remove')被选中,因为WebApi路由在其他路由之前被注册。
如何获得@ Url.Action按预期返回WebApi路由?
你有在同一项目作为非的WebAPI控制器的WebAPI控制器? – DavidG
是的。命名空间是东西.Controllers.WebAPI和something.Controllers – Jason
你试图使用'@ Url.RouteUrl'与路由名称DefaultApi? – py3r3str