gpt4 book ai didi

asp.net-core - 如何控制 URL 参数在我的路由 URL 中的位置?

转载 作者:行者123 更新时间:2023-12-04 15:38:43 24 4
gpt4 key购买 nike

假设我正在创建一个网站来显示客户订单。我想要显示页面:

  1. 一份客户名单,让我可以深入了解...
  2. 给定客户的订单列表,让我可以深入了解...
  3. 客户特定订单的详细信息。

如果我创建几个 Razor 页面,我可能会得到以下结构:

[页面]
索引.cshtml
[顾客]
索引.cshtml
[命令]
索引.cshtml

顶级页面(客户列表)没有参数,因此它的 URL 只是 /

客户页面(客户的订单列表)需要一个客户 ID,所以我可以将 @page "{customerId} 放在 .cshtml 文件的顶部。它的 URL 将是/Customer/123

到目前为止,还不错。该 URL 很有意义。

现在是订单详情页面。这需要一个订单号,所以让我们将 @page "{orderNo}" 放在 .cshtml 文件的顶部。它的 URL 是... /Customer/Order/54321。嗯...我丢失了 URL 中的客户 ID。

我可以通过使 @page 指令包含它 (@page "{customerId}/{orderNo}") 来重新添加客户 ID,但是随后URL 是 /Customer/Order/123/54321 - 看起来不太好。

如何让 URL 看起来像 /Customer/123/Order/54321

最佳答案

您可以使用 override route template否定框架生成的基于路径的路由。覆盖路由以前导 / 开头。在您的示例中,解决方案是:

@page "/Customer/{customerid}/Order/{orderid}"

请注意,这样做的好处是在面对网站结构的变化时保持稳健。例如,您将来可能会决定将 Order 文件夹嵌套在 Customer 文件夹中会阻碍发现,但覆盖路由将确保同时找到该页面URL,无论您将源文件移动到 Pages 文件夹中的哪个位置。

关于asp.net-core - 如何控制 URL 参数在我的路由 URL 中的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58859450/

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