gpt4 book ai didi

regex - .Net MVC 路由用于不确定数量的文件夹(嵌套类别结构)

转载 作者:行者123 更新时间:2023-12-01 11:57:25 24 4
gpt4 key购买 nike

我正在探索在我的下一个电子商务网站中使用 MVC 的可能性。我似乎无法弄清楚的一件事是我是否可以使用我通常使用的相同 URL 约定。目前,任何产品的 URL 都可以是以下之一:

  • 类别/子类别/Product1.html
  • 类别/子类别/子子类别/Product2.html
  • 类别/子类别/子子类别/Product3.html
  • 类别/子类别/子子类别/子子子类别/Product4.html

  • 等等。

    我遇到的问题是嵌套类别结构。到目前为止,我唯一想到的是:
    routes.MapRoute(
    "Products",
    "{categories}/{productname}",
    new { controller = "Product", action = "Details", productname = UrlParameter.Optional },
    new { categories = @"\w+/\w+" }
    );

    我希望 {categories} 可以与以下任何一项匹配,我可以处理这些信息以识别产品所属的正确类别:
  • 运动/网球/ Racket /产品A
  • 运动/羽毛球/ Racket /产品B

  • 但是上面显示的路线不能正常工作。

    有谁知道如何做到这一点,或者如果不能做到?

    最佳答案

    路由系统允许你定义 catchall 参数,忽略斜线和捕获
    直到 URL 末尾的所有内容。通过在参数前面加上前缀来将参数指定为包罗万象的
    星号 (*)。

    routes.MapRoute(null, "Articles/{*articlePath}",
    new { controller = "Articles", action = "Show" }
    );

    一个 URL 模式中只能有一个笼统的参数,并且它必须是最后一个(即,
    最右边)的东西,因为它从那个点开始捕获整个 URL 路径。

    但是有一个警告,它不会从查询字符串中捕获任何内容,因为路由对象只查看
    URL 的路径部分。

    如果您让访问者通过某种任意类型的导航,Catchall 参数很有用
    深度层次结构,例如在内容管理系统 (CMS) 中。

    您可以使用 RouteData 对象来提取有关路线的信息。根据您的需要,您可能会创建一个自定义路由处理程序来解析路由数据并调用正确的 Controller 方法。

    关于regex - .Net MVC 路由用于不确定数量的文件夹(嵌套类别结构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4626298/

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