6

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

例如:

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

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

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

我的域名/123

我的域名/ABC

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

4

1 回答 1

7

是的,如果您使用约束

像这样:

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

如果您将该路由放在您的字符串路由之上(不包含对 的约束@"\d+"),那么它将过滤掉任何包含整数的路由,并且任何没有整数的路由都将通过并且您的string路由会选择它.

真正的诀窍是 Routes 可以根据正则表达式过滤通过的内容,这就是您可以确定应该选择什么内容的方式。

于 2009-07-22T13:55:53.940 回答