为某个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是空字符串。