gpt4 book ai didi

routes - MVC路由: constrain a route to match recognized controller names

转载 作者:行者123 更新时间:2023-12-02 16:40:12 26 4
gpt4 key购买 nike

我想定义一个带有约束的路由,以便它只匹配已知的 Controller 名称。这是为了让我能够为相同形式的其他 URL 定义后备路由。

具体:

/User

应该将我带到用户 Controller (存在)的索引操作

/History

应该将我带到历史记录 Controller (存在)的索引操作

/es

由于不存在“es” Controller ,因此应使用后备路由并将我带到语言参数值为“es”的 Home Controller 的 Index 操作。

我需要这个,因为我需要提供带有语言代码的特殊 URL,以便以给定语言启动应用程序。所以现在需要在路由中区分有效的 Controller 名称和语言名称。

如何实现 RegisterRoutes 来实现此目的?非常感谢!

编辑:我意识到我可以为每个 Controller 定义特定的路由,这没问题(我没有无数的 Controller )。但我想知道是否可以依靠通用约束来实现此目的,这样我就不必定义单独的路线。

最佳答案

定义路线时,请使用“constraints”参数来处理此问题。

例如:

RouteTable.Routes.Add(new Route
{
Url = "{controller}/{action}",
Constraints = new { controller = "User|History" },
Defaults = new { action = "Index" }
};

RouteTable.Routes.Add(new Route
{
Url = "{languageCode}",
Defaults = new { controller = "Home", action = "Index" }
};

将首先评估添加的第一条路线。如果“ Controller ”的 token 与约束不匹配,则将评估添加的下一个路由,并使用 Index 操作和参数 languageCode 中的语言 token 解析到 Home Controller 。您可能还想向 languageCode 标记添加约束,以确保仅匹配有效的语言。然后您可以添加第三条路线作为包罗万象的路线。

您还可以使用路由处理程序来处理 languageCode,如我在博客文章 Localization and MVC 中所述。 .

关于routes - MVC路由: constrain a route to match recognized controller names,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11000005/

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