我如何生成一个MVC视图中的WebAPI网址? [英] How do I generate a webapi url from an MVC view?

查看:175
本文介绍了我如何生成一个MVC视图中的WebAPI网址?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

基于 href=\"http://stackoverflow.com/questions/9502306/how-to-create-asp-net-web-api-url\">如何创建的ASP.NET Web API网址<? / A>

这些都不加我试过正在他们中的几个组合

 &LT;立GT;&LT; A HREF =@ Url.RouteUrl(DefaultApi,新的{面积=的String.Empty,httproute =的String.Empty,控制器=corpuserrequest ,行动=GET})&GT; CorpUser&LT; / A&GT;&LT; /李&GT;
                        &LT;李&GT;&LT; A HREF =@ Url.Action(GET,CorpUserRequest,新的{面积=的String.Empty,httproute =,控制器=CorpUserRequest,行动=GET}) &GT; CorpUser&LT; / A&GT;&LT; /李&GT;

下面是我的API配置路由表:

<$p$p><$c$c>//http://stackoverflow.com/questions/11407267/multiple-httppost-method-in-mvc4-web-api-controller
        config.Routes.MapHttpRoute(
            名称:ApiReq
            routeTemplate的WebAPI / {控制器} / {行动},
           默认值:空,
           限制:新{行动=REQ}
        );        config.Routes.MapHttpRoute(
            名称:DefaultApi
            routeTemplate:API / {}控制器/(编号),
            默认:新{ID = RouteParameter.Optional},
            约束条件:新
            {
                ID = @^ \\ D * $,//只有整数
                行动=^(?![RR]当量)$//任何东西,除了REQ或询价
            }
        );

为什么没有路由的工作?该RouteUrl返回空字符串或null,则该操作将返回

 &LT; A HREF =HTTP://本地主机:11601 / CorpUserRequest / GET&GT;

而不是实际的URL应该是什么的http://本地主机:11601 / API / CorpUserRequest


解决方案

您可以使用以下任生成链接到网页API:


  1. @ Url.HttpRouteUrl(DefaultApi,新{控制器=corpuserrequest})

  2. @ Url.RouteUrl(DefaultApi,新的{httproute = true时,控制器=corpuserrequest})

通常,使用选项 1 ,但有时你可能需要在以下使用 2 像后(这个职位并不一定要用 RouteUrl ,但这个想法是,在你没有一个方便的扩展,比如 HttpRouteUrl ,在这种情况下 Html.BeginForm ,您可以使用 httproute = TRUE ,以表明你确实是试图生成一个URL到Web API路线)

<一个href=\"http://stackoverflow.com/questions/19348340/asp-net-webapi-invalid-url-generated-in-beginform/19773898#19773898\">ASP.Net的WebAPI:在BeginForm 产生无效网址

Based on How to create ASP.NET Web API Url?

Neither of these plus a few more combinations of them I've tried are working

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

Here's my api config route table:

//http://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
            }
        );

Why isn't the routing working? The RouteUrl returns empty string or null, the Action returns

<a href="http://localhost:11601/CorpUserRequest/Get">

instead of what the actual url should be http://localhost:11601/api/CorpUserRequest

解决方案

You could use either of the following to generate links to Web API:

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

Usually you would use option 1., but sometimes you might need to use 2. like in the following post (this post doesn't necessarily use RouteUrl, but the idea is that in places where you do not have a convenient extension like HttpRouteUrl, in this case Html.BeginForm, you can use httproute=true to indicate that you are indeed trying to generate a url to a Web API route)

ASP.Net WebApi: Invalid URL generated in BeginForm

这篇关于我如何生成一个MVC视图中的WebAPI网址?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆