如何创建 ASP.NET Web API Url? [英] How to create ASP.NET Web API Url?

查看:24
本文介绍了如何创建 ASP.NET Web API Url?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在 ASP.NET MVC 中,我们有 @Url.Action 用于操作.是否有类似 @Url.Api 之类的东西会路由到/api/controller?

解决方案

ApiController 有一个名为 Url 类型为 System.Web.Http.Routing.UrlHelper 允许您为 api 控制器构建 url.>

示例:

公共类 ValuesController : ApiController{//获取/api/values公共 IEnumerable得到(){//返回/api/values/123string url = Url.Route("DefaultApi", new { controller = "values", id = "123" });返回新字符串[] { "value1", "value2" };}//获取/api/values/5公共字符串 Get(int id){返回值";}...}

这个 UrlHelper 在您的视图和标准控制器中都不存在.

<小时>

更新:

为了在 ApiController 之外进行路由,您可以执行以下操作:

公共类 HomeController : 控制器{公共 ActionResult 索引(){字符串 url = Url.RouteUrl("默认API",new { httproute = "", controller = "values", id = "123" });返回视图();}}

或在视图中:

注意 httproute = "" 路由标记很重要.

显然,这假设您的 Api 路由在 Global.asax 的 RegisterRoutes 方法中被称为 DefaultApi:

routes.MapHttpRoute(name: "DefaultApi",routeTemplate: "api/{controller}/{id}",默认值:新 { id = RouteParameter.Optional });

In ASP.NET MVC, we have @Url.Action for actions. Is there something similar like @Url.Api which would route to /api/controller?

解决方案

The ApiController has a property called Url which is of type System.Web.Http.Routing.UrlHelper which allows you to construct urls for api controllers.

Example:

public class ValuesController : ApiController
{
    // GET /api/values
    public IEnumerable<string> Get()
    {
        // returns /api/values/123
        string url = Url.Route("DefaultApi", new { controller = "values", id = "123" });
        return new string[] { "value1", "value2" };
    }

    // GET /api/values/5
    public string Get(int id)
    {
        return "value";
    }

    ...
}

This UrlHelper doesn't exist neither in your views nor in the standard controllers.


UPDATE:

And in order to do routing outside of an ApiController you could do the following:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        string url = Url.RouteUrl(
            "DefaultApi", 
            new { httproute = "", controller = "values", id = "123" }
        );
        return View();
    }
}

or inside a view:

<script type="text/javascript">
    var url = '@Url.RouteUrl("DefaultApi", new { httproute = "", controller = "values", id = "123" })';
    $.ajax({
       url: url,
       type: 'GET',
       success: function(result) {
           // ...
       }
    });
</script>

Notice the httproute = "" route token which is important.

Obviously this assumes that your Api route is called DefaultApi in your RegisterRoutes method in Global.asax:

routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

这篇关于如何创建 ASP.NET Web API Url?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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