gpt4 book ai didi

asp.net-mvc-3 - 如何在MVC route 组合CatchAll和EndsWith?

转载 作者:行者123 更新时间:2023-12-04 13:53:21 26 4
gpt4 key购买 nike

以下路由将匹配BasePath下的任何文件夹结构:

http://BasePath/{*SomeFolders}/ 

如何创建与同一BasePath结构下的任何zip文件匹配的另一条路由?

我试过了...
http://BasePath/{*SomeFolders}/{ZipFile}

...但是错误

包含多个部分(例如文字部分或参数)的路径段不能包含全部参数。
参数名称:routeUrl

我应该如何处理?

* 更新*

最初的要求实际上有缺陷。
{ZipFile}将匹配最后一部分,无论其包含什么内容。 (文件或文件夹)

实际上,我认为我要匹配的路线模式应为:
http://BasePath/{*SomeFolders}/{ZipFile}.zip

最佳答案

捕获URL中所有位置的内容-正是您所需要的

我已经编写了此类Route类,使您可以完全按照自己的描述进行操作。它允许您将全部捕获段作为路由定义中的第一个段(或其他任何实际位置)。它将允许您将路线定义为:

"BasePath/{*SomeFolders}/{ZipFile}"

整个过程在 my blog post上进行了非常详细的描述,您可以在其中找到 Route类的代码。

附加信息

根据添加的信息,我仍然希望使用第一个路由定义,该定义不将文件扩展名排除在路由段参数之外,而是为最后一个段添加约束
"[a-zA-Z0-9_]+\.zip"

因此,路由仍应按照我在答案中的说明进行定义,但是 ZipFile的约束应按先前编写的定义。这将使我的特殊路线像现在一样开箱即用。

为了也使其适用于其他路由定界符(例如示例中的点),应该对代码进行相当大的更改,但是如果您非常了解路由的工作原理,则可以将其更改为这种方式。

但是我宁愿建议您保持简单并添加约束。

关于asp.net-mvc-3 - 如何在MVC route 组合CatchAll和EndsWith?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10114352/

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