Проблема сопоставления маршрута ASP.NET MVC с необязательным параметром URL - PullRequest
0 голосов
/ 06 сентября 2010
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();
        }

Это может отображать
Архив / Remond / WA / Химия

Архив / Remond / WA / Химия / 2010

Но не

Архив / Remond / WA

Кто-нибудь может помочь? Спасибо.

1 Ответ

0 голосов
/ 06 сентября 2010

Эти ограничения не позволяют ему соответствовать тому, что вы хотите:

OP1 = @"[a-zA-Z]+", 
OP2 = @"\d{4}"

Поскольку оба параметра обязательны. Измените свое регулярное выражение так, чтобы оно принимало пустые значения, если вы хотите, чтобы этот маршрут мог соответствовать Archive/Remond/WA. Также помните, что только параметр last может быть необязательным (вы не можете иметь два последовательных необязательных параметра, поскольку это не имеет смысла).

...