gpt4 book ai didi

asp.net-mvc-4 - 如何创建 ASP.NET Web API URL?

转载 作者:行者123 更新时间:2023-12-02 20:34:17 25 4
gpt4 key购买 nike

在 ASP.NET MVC 中,我们有 @Url.Action 用于操作。是否有类似 @Url.Api 之类的内容可以路由到/api/controller?

最佳答案

ApiController有一个名为 Url 的属性其类型为 System.Web.Http.Routing.UrlHelper它允许您为 api Controller 构建 url。

示例:

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";
}

...
}

此 UrlHelper 既不存在于您的 View 中,也不存在于标准 Controller 中。

<小时/>

更新:

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

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

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

请注意 httproute = "" 路由 token ,这很重要。

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

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

关于asp.net-mvc-4 - 如何创建 ASP.NET Web API URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9502306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com