【问题标题】:ASP.NET MVC URL RoutesASP.NET MVC URL 路由
【发布时间】:2010-11-13 00:19:10
【问题描述】:

在 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

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

【问题讨论】:

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


    【解决方案1】:

    是的,如果你使用constraints:

    像这样:

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

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

    真正的诀窍在于,Routes 可以根据 Regular Expressions 过滤通过的内容,这样您就可以确定应该提取什么。

    【讨论】:

    • 没问题。我在 ASP.NET MVC 路由方面遇到了很多问题。足以填满一本书。或者一些博客文章。如果我有机会完成它们。
    猜你喜欢
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 2014-04-23
    相关资源
    最近更新 更多