gpt4 book ai didi

asp.net-mvc - 如何从 MVC View 生成 webapi url?

转载 作者:行者123 更新时间:2023-12-02 06:02:59 25 4
gpt4 key购买 nike

基于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">

而不是实际的 URL http://localhost:11601/api/CorpUserRequest

最佳答案

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

  1. @Url.HttpRouteUrl("DefaultApi", new {controller = "corpuserrequest"})
  2. @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

关于asp.net-mvc - 如何从 MVC View 生成 webapi url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19868148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com