Я пытаюсь включить маршрут, подобный следующему
route = new Route("{w1}-{c1}-{n1},{w2}-{c2}-{n2}", new ResultRouteHandler());
route.Constraints = new RouteValueDictionary();
route.Constraints.Add("c1", "(.*)|([-])");
route.Constraints.Add("c2", "(.*)|([-])");
RouteTable.Routes.Add(route);
Однако я сталкиваюсь с проблемой, когда c1 или c2 - "-". Например, «a-b-c, d --- f» возвращает 404 (тогда как «a-b-c, d-e-f» работает нормально). У кого-нибудь есть подсказка, что я делаю не так? Заранее спасибо.
EDIT:
Я нашел простой способ решения этой проблемы:
route = new Route("{w1}-{c1}-{n1},{w2}---{n2}", new MyRouteHandler());
RouteTable.Routes.Add(route);
route = new Route("{w1}-{c1}-{n1},{w2}-{c2}-{n2}", new MyRouteHandler());
RouteTable.Routes.Add(route);
Если c2 равен "-", мы сопоставляем первый маршрут, в противном случае - второй.