【发布时间】:2014-09-12 04:21:41
【问题描述】:
我有 2 个控制器,其中 1 个是 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("Remove", "List")生成url时,我得到的路径是'/list/remove'。我希望选择 WebApi 路由('/api/list/remove'),因为 WebApi 路由是在其他路由之前注册的。
如何让@Url.Action 按预期返回 WebApi 路由?
【问题讨论】:
-
你有WebApi控制器和非Webapi控制器在同一个项目吗?
-
是的。命名空间是 something.Controllers.WebAPI 和 something.Controllers
-
你尝试使用
@Url.RouteUrl与路由名称 DefaultApi? -
我已经尝试过
@Url.Action("Remove", "List", new { httproute = "DefaultApi" })并且按预期工作。 -
无耻地添加此评论作为答案,对我来说效果很好,但我最初查看了这个问题,因为它没有被接受的答案。
标签: asp.net-mvc asp.net-mvc-4 asp.net-web-api asp.net-mvc-routing