基于How to create ASP.NET Web API Url?
这些以及我尝试过的其他几种组合均无用
<li><a href="@Url.RouteUrl("DefaultApi",new {area=string.Empty,httproute = string.Empty, controller = "corpuserrequest", action="Get"})">CorpUser</a></li>
<li><a href="@Url.Action("Get","CorpUserRequest",new {area=string.Empty,httproute ="", controller = "CorpUserRequest", action="Get"})">CorpUser</a></li>
这是我的api配置路由表:
//https://stackoverflow.com/questions/11407267/multiple-httppost-method-in-mvc4-web-api-controller
config.Routes.MapHttpRoute(
name: "ApiReq",
routeTemplate: "webapi/{controller}/{action}",
defaults: null,
constraints: new { action = "Req" }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: new
{
id = @"^\d*$",// Only integers
action = "^(?![rR]eq)$" //anything except req or Req
}
);
为什么路由不起作用? RouteUrl返回空字符串或null,Action返回
<a href="http://localhost:11601/CorpUserRequest/Get">
而不是实际网址应为
http://localhost:11601/api/CorpUserRequest
最佳答案
您可以使用以下任一方法来生成指向Web API的链接:@Url.HttpRouteUrl("DefaultApi", new {controller = "corpuserrequest"})
@Url.RouteUrl("DefaultApi", new { httproute = true, controller = "corpuserrequest"})
通常,您会使用选项1.
,但是有时您可能需要使用2.
,如以下文章中所述(该文章不一定使用RouteUrl
,但其想法是在您不方便使用的地方扩展名(如HttpRouteUrl
,在本例中为Html.BeginForm
)中,您可以使用httproute=true
表示您确实在尝试生成Web API路由的url)
ASP.Net WebApi: Invalid URL generated in BeginForm