Asp.net mvc 2 带有可选URL参数的ASP.NET MVC路由映射问题

Asp.net mvc 2 带有可选URL参数的ASP.NET MVC路由映射问题,asp.net-mvc-2,asp.net-mvc-routing,Asp.net Mvc 2,Asp.net Mvc Routing,这可以映射到 Archive/Remond/WA/Chemistry Archive/Remond/WA/Chemistry/2010 但不是 存档/删除/WA 有人能帮忙吗?谢谢。这些限制使其无法与您想要的匹配: routes.MapRoute("Archive.CityState", "Archive/{City}/{State}/{OP1}/{OP2}", new { controller = "Archive", action =

这可以映射到
Archive/Remond/WA/Chemistry

Archive/Remond/WA/Chemistry/2010

但不是

存档/删除/WA


有人能帮忙吗?谢谢。

这些限制使其无法与您想要的匹配:

routes.MapRoute("Archive.CityState",
              "Archive/{City}/{State}/{OP1}/{OP2}",
               new { controller = "Archive", action = "CityState", OP1 = UrlParameter.Optional, OP2 = UrlParameter.Optional },
               new { City="[a-zA-Z]+" ,State = @"[a-zA-Z]{2}", OP1 = @"[a-zA-Z]+" , OP2 =@"\d{4}" });


public ActionResult CityState(string City, string State, string OP1, int OP2)
        {
            var x = City; 
            var y = State;
            var OptionalParameter1= OP1;
            var OptionalParameter2 = OP2;
            return View();
        }

因为这两个参数都是必需的。如果希望此路由能够由
Archive/Remond/WA
匹配,请修改正则表达式以接受空值。还要记住,只有最后一个参数是可选的(不能有两个连续的可选参数,因为这没有意义)。

谢谢。通过删除约束,问题立即消失。但如果约束使参数成为必需的,为什么Archive/Remond/WA/Chemistry使用OP2=@“\d{4}”?
OP1 = @"[a-zA-Z]+", 
OP2 = @"\d{4}"