Я создаю коммерческий сайт, и я столкнулся с проблемой нескольких категорий внутри категорий.Мои ссылки ActionLink идут в нужную категорию, но иногда они помещают избыточную строку запроса в конце.Это не всегда происходит, только когда в подкатегории (я понимаю, что actionlink пытается вытащить значения маршрута из любой точки, но смотри ниже)
Я немного ошарашил его, чтобы убедиться, что яничего не пропуская, но у меня те же проблемы:
routes.MapRoute(
"Store1",
"store/{tier1Category}/{tier2Category}/{categoryId}",
new { controller = "Store", action = "Index"},
new { categoryId = @"\d+" }
);
routes.MapRoute(
"Store",
"store/{tier1Category}/{categoryId}",
new { controller = "Store", action = "Index"},
new { categoryId = @"\d+" }
);
Я создал расширение HtmlHelper для ссылок на категории:
public static MvcHtmlString CategoryLink(this HtmlHelper helper, Category category)
{
.........
return helper.ActionLink(category.Name, "Index", "Store", new { tier1Category = tier1Category, tier2Category = tier2Category, categoryId = category.CategoryID }, null);
}
(снипп-код просто получает tier1Category &tier2Category)
Итак, на домашней странице есть меню навигации, например:
http://localhost/store/tshirt/1
Теперь, если бы мне нужно было перейти в подкатегориюэта категория (http://localhost/store/tshirt/men/2) та же ссылка в навигации будет:
http://localhost/store/tshirt/1?tier2category=men
Теперь, что делает это более запутанным, так это то, что когда я отлаживаю метод расширения выше, в этом сценарии,возвращаемая ссылка действия - "http://localhost/store/tshirt/1", т. е. правильная! Так что, похоже, что-то происходит с MvcHtmlString, которая возвращается из расширения к тому времени, когда он выплевывает html. Также следует отметить, что ссылка все еще идет наTОн указал правильное местоположение.
Любая помощь была бы великолепна, потому что я как бы тяну свои волосы сюда ...