是否可以在 ASP.NET MVC 路由中包含所有后跟其他参数的参数?

发布于 2024-08-30 17:42:56 字数 132 浏览 8 评论 0原文

我想创建一个看起来像这样的路由:

routes.Add(new Route("{*url}/{action}.do/{id}", new MvcRouteHandler())

这可能吗?看起来像包罗万象必须放在最后?

I would like to create a route that looks something like this:

routes.Add(new Route("{*url}/{action}.do/{id}", new MvcRouteHandler())

Is this possible? It seems like the catchall has to be last?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

和影子一齐双人舞 2024-09-06 17:42:57

包罗万象的参数必须是路由中的最后一个参数,因为它表示“匹配 URL 剩余部分的全部”。

不过,您可以通过只使用包罗万象并使用自定义 MyRouteHandler 而不是 MvcRouteHandler 来伪造它。您的自定义路由处理程序只需操作 RouteContext,将 actionid 从 URL 中分离出来,然后再将其传递给 MvcRouteHandler 进行处理。

The catch-all has to be the last parameter in the route, as it says "match the entirety of what remains of the URL."

You could fake it, though, by having just the catchall and using a custom MyRouteHandler instead of the MvcRouteHandler. Your custom route handler would just manipulate the RouteContext to split the action and id back out of the URL before passing it to the MvcRouteHandler for processing.

青衫负雪 2024-09-06 17:42:57

来自 斯科特顾

MVC框架选择
通过评估来使用控制器
路由表规则的顺序是
他们已被注册

我认为您可以在catch-all之后注册,但它永远不会被击中,因为catch-all将首先被击中。

From ScottGu:

The MVC framework chooses the
Controller to use by evaluating the
RouteTable rules in the order that
they have been registered

I think you can register after the catch-all, but it won't ever be hit because the catch-all will be hit first.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文