c# - ASP.NET MVC URL 路由

标签 c# asp.net-mvc url-routing

在 ASP.NET MVC 中,是否可以定义路由,根据 URL 部分的数据类型来确定使用哪个 Controller ?

例如:

routes.MapRoute("Integer", "{myInteger}", new { controller = "Integer", action = "ProcessInteger", myInteger = "" });

routes.MapRoute("String", "{myString}", new { controller = "String", action = "ProcessString", myString = "" });

本质上,我希望以下 URL 由不同的 Controller 处理,即使它们具有相同数量的部分:

mydomain/123

mydomain/ABC

附言上面的代码不起作用,但它表明了我想要实现的目标。

最佳答案

是的,如果你使用 constraints :

像这样:

 routes.MapRoute(
                "Integers",
                "{myInteger}",
                    new { controller = "Integer", action = "ProcessInteger"},
                    new { myInteger = @"\d+" }
          );

如果将该路由放在字符串路由之上(不包含 @"\d+" 的约束),那么它会过滤掉所有包含整数的路由,以及任何不包含整数的路由'有整数将被传递,你的 string 路由将拾取它。

真正的诀窍是路由可以根据 Regular Expressions 过滤通过的内容,这就是您如何确定应该拾取它的方式。

关于c# - ASP.NET MVC URL 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1165322/

相关文章:

c# - LINQ-to-SQL .ExecuteCommand() 不适用于参数化对象名称

c# - 如何以最有效的方式从哈希集中迭代和删除元素

c# - 将非通用集合转换为通用集合的最佳方法

c# - MVC中Http错误405的自定义错误处理程序

c# - ASP.NET 家庭 Controller

c# - 如何做到这一点,如果一个程序的副本正在运行,另一个将无法打开?

c# - EditorFor() 可以用来创建 <input type ="file"> 吗?

python - 如何存储全局(url_for)URL(和其他全局变量)并在 Flask 应用程序中共享?

javascript - Angular 4 如何封装页面结构/路由?

c# - 从 ASP.NET WebForms 到 ASP.NET MVC 时维护 URL