代码改变世界

如何为Asp.net MVC web api生成Url?

2012-09-28 13:59  JustRun  阅读(...)  评论(...编辑  收藏

为某个Action生成Url, 可以使用Url.Action方法,就能得到针对某个Action的Url.

但是web API呢? 好像没有Url.Api方法的。

这里如果我们的web api的route是这样设置的:

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

那么我们可以这样得到web api的Url:

Url.RouteUrl(
            "DefaultApi", 
            new{ httproute ="", controller ="values", id ="123"}
        );

注意,这里的httproute设置非常重要,没有这个会导致Url为空。
因为它回去寻找普通的Route匹配,由于找不到DefaultApi, 所以Url是空字符串。