ASP.NET MVC 3.0 Url Routing Issue - PullRequest
0 голосов
/ 26 января 2012

Привет, я зарегистрировал маршрут, как показано ниже: -

 routes.MapLocalizedRoute("Category",
                        "{SeName}-c{categoryId}",
                        new { controller = "Catalog", action = "Category", SeName =       UrlParameter.Optional },
                        new { categoryId = @"\d+", SeName = @"([-\w+]+(/[-\w+]+)*)+" },
                        new[] { "Nop.Web.Controllers" });

 routes.MapLocalizedRoute("CategoryWithManufacture",
                   "{SeName}-d{categoryId}/{ManufactureName}/{Color}",
                   new { controller = "Catalog", action = "Category", SeName = UrlParameter.Optional, Color = UrlParameter.Optional },
                   new { categoryId = @"\d+", SeName = @"([-\w+]+(/[-\w+]+)*)+", ManufactureName = @"([-\w+]+(/[-\w+]+)*)+", Color = @"([-\w+]+(/[-\w+]+)*)+" },
                   new[] { "Nop.Web.Controllers" });

Мы генерируем их, как показано ниже: -

 href="@Url.RouteUrl("CategoryWithManufacture", new { categoryId = currentCategoryId, SeName = seName, ManufactureName = manufacturerFilterItem.Name, Color = color })"


 href="@Url.RouteUrl("Category", new { categoryId = currentCategoryId, SeName = seName})"

Есть способ присвоить значение непосредственно второму параметру "Цвет"msgstr "без присваивания значения" ManufactureName ".означает: - (Использование CategoryWithManufacture Route)

/gloves-d18/red  (second parameter)
/gloves-d18/hp/red (first and second both)

Я попробовал это сделать, сделав необязательный параметр factoryName & color, но когда мы присваиваем значение первому параметру, а не второму, оно работает.Но мы присваиваем значение второму параметру не первому, тогда он не работает.

Пожалуйста, предложите мне полезную ссылку или пример кода.

1 Ответ

1 голос
/ 26 января 2012

Только последний параметр может быть необязательным в определении маршрута.Учитывая следующий URL /gloves-d18/red, механизм маршрутов не может знать, что red относится здесь к {Color}, а не {ManufactureName}.Единственное, что может сделать эту работу - это написать какое-то ограничение для этих двух частей.Сейчас у них обоих одинаковое ограничение регулярного выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...