Почему мои URL маршрутизации не совпадают на разных контроллерах? - PullRequest
0 голосов
/ 23 ноября 2010

Я только что создал контроллер SiteMap, который генерирует карту сайта для моего сайта. Я пытаюсь вывести URL-адрес продуктов, которые я перечислил на сайте. В моем списке товаров, например, у меня есть этот код:

Url.Action("Details", "Products", new { id = item.Id, productName = Url.ToFriendlyUrl(item.Brand + " " + item.Colour + " " + item.Size + " " + item.Title) })

который выводит этот URL:

/ продукция / подробности / 1330 / Sandee-голубые стрелковое камуфляжные шорты

, который отображает этот маршрут:

    routes.MapRoute(

        "ViewProduct",

        "products/{cat}/{id}/{productName}",

        new { controller = "products", action = "Details", cat = "", id = "", productName = "" },

        new string[] { "EliteFightKit.Web.Controllers" }

    );

В моем контроллере SiteMap, однако, я использую этот код для генерации URL:

Url.Action("Details", "Products", new { id = item.Id, productName = Url.ToFriendlyUrl(item.Brand + " " + item.Colour + " " + item.Size + " " + item.Title) })

и выводит это:

/ продукция / подробности / 1330? PRODUCTNAME = Sandee-голубые стрелковое камуфляжные шорты

где я ошибаюсь, как получить URL-адрес SiteMap, соответствующий URL-адресу, созданному в представлении списка моих продуктов?

Lloyd

1 Ответ

1 голос
/ 23 ноября 2010

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

Url.Action("Details", "Products", 
    new { id = "123", productName = "foo", cat = "bar" })
...