2012-01-26 3 views
0

Привет Я зарегистрировал маршрут, как показано ниже: -ASP.NET MVC 3.0 Url Routing Выпуск

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})" 

Существует способ присвоить значение непосредственно второй параметр «Цвет» без присваивания значения «ManufactureName». означает: - (Использование CategoryWithManufacture маршрута)

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

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

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

ответ

1

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

+0

, пожалуйста, предложите мне любую модификацию на моем маршруте. –