映射问题
问题描述:
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 [email protected]"\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();
}
这可以映射
存档/雷蒙/ WA /化学映射问题
存档/雷蒙/ WA /化学/ 2010
但不是
存档/ Remond/WA
任何人都可以帮忙吗?谢谢。
答
这些约束防止它匹配你想要什么:
OP1 = @"[a-zA-Z]+",
OP2 = @"\d{4}"
因为需要两个参数。修改您的正则表达式以接受空值,如果您希望此路线能够与Archive/Remond/WA
匹配。还要记住,只有最后参数可以是可选的(你不能有两个连续的可选参数,因为这没有意义)。
谢谢。通过消除约束,问题立即消失。但是如果约束使参数需要,为什么Archive/Remond/WA/Chemistry与OP2 = @“\ d {4}”一起工作? – stoto 2010-09-06 18:02:08