ASP.NET MVC URL路由

时间:2009-07-22 13:39:17

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

在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,即使它们具有相同数量的部分:

  

MYDOMAIN / 123

     

MYDOMAIN / ABC

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

1 个答案:

答案 0 :(得分:7)

是的,如果您使用constraints

像这样:

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

如果将该路由放在字符串路由之上(不包含@"\d+"的约束),那么它将过滤掉任何包含整数的路由,并且任何没有整数的路由都将被传递通过,你的string路线会接收它。

真正的诀窍是路线可以根据Regular Expressions来过滤正在发生的事情,这就是你如何确定应该拿起什么的。