【发布时间】:2021-12-07 09:05:48
【问题描述】:
我正在尝试在我的客户端-服务器应用程序中进行导航。我正在尝试制作一个小型在线目录
我希望在浏览类别时,路径显示在 URL 中:
https://test.com/
https://test.com/controllers
https://test.com/controllers/for-media-screens
https://test.com/
https://test.com/phones
https://test.com/phones/nokia
如果你知道除了最后一个链接之外的整个路径,你可以在Razor组件中写@page "/phones/{model}"
那么当整个路径未知时该怎么办?
@page 指令不能包含一个数组,其值将被扩展为一个链接。
你有什么想法可以组织吗?
我认为级联参数会起作用,但它们不适用于 @page。
我还认为可以将产品的完整路径存储在数据库中,但我不确定这是不是最好的解决方案。
更新: @KirkWoll,原则上所有类别都是未知的
好吧,看看我的意思 可以有大量不同级别的类别和子类别:
https://site.ru/1-level/2-level/.../n-level/product
当我们移动到 1 级目录时,我们的 URL 看起来像 /1-level。从那里我们可以进入下一级类别,URL 看起来像/1-level/2-level。以此类推。
也就是说,我们只知道具体的领域
如果相对而言,我们的网站只有1个分类,没有任何子分类,那么我们可以简单地在分类页面模板的页面指令中严格设置它的URL,例如@page "/category",并在里面写上@page "/category/{Id:int}产品模板
问题是如何编写传递前一个 URL 的代码,使链接看起来像 https://site.ru/1-level/2-level/.../n-level/product
也就是说,如果可能的话,我需要写在@page "/{?1}/{?2}.../{n}"类别的模板和产品模板@page "/{?1}/{?2}.../{n}/{Id:int}"
【问题讨论】:
-
"那么当整个路径未知时怎么办?"这种路径的例子是什么?
-
@KirkWoll,嗨!我已经更新了帖子中问题的内容。请阅读它
-
谢谢,您对 n 级深度路径的解释为我澄清了您的问题。
-
你看过"catch all" (i.e. wildcard) routing吗?特别是“对于路由模板为
/catch-all/{*pageRoute}的URL/catch-all/this/is/a/test,PageRoute的值设置为this/is/a/test。” -
该死的,我看了这个文档,但是显然是因为疲劳,因为我一直在寻找解决问题的方法,所以我没有注意到文中的这一段!非常感谢您的帮助,我非常感谢!结果一切都比我预期的要容易得多! :D 如果您使用此答案发帖,我很乐意将其标记为解决方案!