如何创建 ASP.NET Web API Url? [英] How to create 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屋!