16

基于如何创建 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

4

1 回答 1

19

您可以使用以下任一方法生成指向 Web API 的链接:

  1. @Url.HttpRouteUrl("DefaultApi", new {controller = "corpuserrequest"})
  2. @Url.RouteUrl("DefaultApi", new { httproute = true, controller = "corpuserrequest"})

通常你会使用 option 1.,但有时你可能需要2.在下面的帖子中使用 like (这篇文章不一定使用RouteUrl,但想法是在你没有方便的扩展名的地方HttpRouteUrl,在这种情况下Html.BeginForm,你可以用于httproute=true指示您确实在尝试生成 Web API 路由的 url)

ASP.Net WebApi:BeginForm 中生成的 URL 无效

于 2013-11-08T20:54:05.647 回答