Подтвердить что ты не робот

Как создать URL-адрес webapi из представления MVC?

На основе Как создать URL веб-API ASP.NET?

Ни один из них плюс несколько других комбинаций из них, которые я пробовал, работает

 <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 config:

//https://stackoverflow.com/info/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, действие возвращает

<a href="#" onclick="location.href='http://localhost:11601/CorpUserRequest/Get'; return false;">

вместо фактического URL-адреса должен быть http://localhost:11601/api/CorpUserRequest

4b9b3361

Ответ 1

Для создания ссылок на веб-интерфейс можно использовать одно из следующих действий:

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

Обычно вы используете опцию 1., но иногда вам может понадобиться использовать 2., как в следующем сообщении (это сообщение не обязательно использует RouteUrl, но идея в том, что в тех местах, где вы не имеют удобное расширение, например HttpRouteUrl, в этом случае Html.BeginForm вы можете использовать httproute=true, чтобы указать, что вы действительно пытаетесь создать URL-адрес для маршрута веб-API)

ASP.Net WebApi: неверный URL-адрес, сгенерированный в BeginForm