gpt4 book ai didi

asp.net-core - 在 ASP.NET Core 的 URL 查询中使用破折号

转载 作者:行者123 更新时间:2023-12-01 06:15:24 26 4
gpt4 key购买 nike

我们可以在 Route 中使用破折号 (-) ASP.NET Core 中的模板?

// GET: api/customers/5/orders?active-orders=true
[Route("customers/{customer-id}/orders")]
public IActionResult GetCustomerOrders(int customerId, bool activeOrders)
{
.
.
.
}

(上面的代码不起作用)

最佳答案

路由参数通常直接映射到action的变量名 , 所以 [Route("customers/{customerId}/orders")]应该可以工作,因为这是您的变量的名称( int customerId )。
不需要破折号,花括号内的部分{}永远不会作为生成的 url 的一部分出现,它将始终被您从浏览器传递的内容或传递给 url 生成器的变量所取代。customers/{customerId}/orders将永远是 customers/1/orderscustomerId设置为 1,因此没有必要将其强制为 {customer-id} .
但是,您可以尝试公开

[Route("customers/{customer-id}/orders")]
IActionResult GetCustomerOrders([FromRoute(Name = "customer-id")]int customerId, bool activeOrders)
绑定(bind) customerId如果您愿意,可以使用非常规的路线名称。但我强烈建议不要这样做,因为它只是添加了不必要的代码 绝对零效应 在您生成的网址上。
以上生成(并解析) 完全相同网址为
[Route("customers/{customerId}/orders")]
IActionResult GetCustomerOrders(int customerId, bool activeOrders)
并且是更具可读性的代码。
对于查询部分,正如您在评论中发现的那样,通过 [FromQuery(Name = "active-orders")] bool activeOrders 添加破折号是有意义的。 ,因为这确实会影响生成的 url。
ASP.NET Core 2.2 中的新功能
在 ASP.NET Core 2.2 中,您将获得一个“slugify”路由的新选项(仅在使用新的 Route Dispatcher 而不是默认的 Mvc 路由器时支持)。 blog\{article:slugify} 的路线将(与 Url.Action(new { article = "MyTestArticle" }) 一起使用时)生成 blog\my-test-article作为网址。
也可以在默认路由中使用:
routes.MapRoute(
name: "default",
template: "{controller=Home:slugify}/{action=Index:slugify}/{id?}");
欲了解更多详情,请参阅 ASP.NET Core 2.2-preview 3 annoucement .

关于asp.net-core - 在 ASP.NET Core 的 URL 查询中使用破折号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53022924/

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