ASP.NET MVC 3 Необязательная проблема маршрутизации параметров - PullRequest
1 голос
/ 04 января 2012

http://blogs.msdn.com/b/simonince/archive/2011/02/02/asp-net-mvc-3-optional-parameter-routing-issue.aspx

Обходной путь, упомянутый на вышеуказанном сайте, является приемлемым. Но что произойдет, если последний параметр не является обязательным, а первые два являются необязательными в MVC3? Кто-нибудь может знать обходной путь. Меня просто смущает сомнение.

1 Ответ

4 голосов
/ 04 января 2012

В определении маршрута MVC3 только последний параметр может быть необязательным.Как намекает Nat, вы можете создать несколько маршрутов для одного и того же метода действия контроллера.

Если вы хотите иметь один обязательный параметр и 2 необязательных параметра, вы можете определить несколько маршрутов:

...MapRoute(null, "static-segment/{required}/{optional1}/{optional2}", 
    new { controller = "ControllerName", action = "ActionName", 
        optional2 = UrlParameter.Optional });

...MapRoute(null, "static-segment/{required}/{optional1}", 
    new { controller = "ControllerName", action = "ActionName", 
        optional1 = UrlParameter.Optional });

...MapRoute(null, "static-segment/{required}/{optional2}", 
    new { controller = "ControllerName", action = "ActionName", 
        optional2 = UrlParameter.Optional });

Единственный маршрут, в котором есть 2 необязательных параметра, - это то, что вы не можетесделать в MVC3.Кроме того, наличие необязательного параметра перед обязательным параметром в маршруте - это то, что вы не можете сделать в MVC3.Вам необходимо детализировать все сценарии маршрутизации и создать маршруты, которые будут соответствовать каждому случаю в вашей схеме URL.

...