Я видел некоторые сообщения о навигации и сухарях, но не нашел exaxt ту же проблему. Однако, если есть, пожалуйста, прости и укажи мне на это. Спасибо.
Мой случай:
Interests Profiles
| |
|_Interest Area 1 |-Profile Area 1
| | |
| |_Interest Area 1.1 |_List of Books
| | |
| |_List of Books |_Book Detail
| |
| |_Book Detail
|_Interest Area 2
|
|_List of Books
|
|_Book Detail
Иерархия хранится в базе данных. Точки входа Интересы и Профили фиксированы. Оттуда я не знаю, какими будут дети.
Когда дочерних элементов больше не осталось, книги извлекаются на основании значения последней выбранной (под) категории.
У меня здесь две проблемы:
1-й: создание соответствующих маршрутов. Я бы хотел, чтобы это было так:
/books/{id}/{interestareaname}/{subinterestareaname}/{books}/{page}
где интересное имя добавлено для удобных для пользователя URL-адресов и повторяется до тех пор, пока вы переходите по иерархии. Результат будет тогда:
/ книги / 1 / проект-менеджмент / PRINCE2 / книги / 1
это показывает книги prince2 на странице с листированной страницей 1.
Но когда есть только один уровень, маршрут содержит только одно интересное имя и, таким образом, становится таким:
/book/{id}/{interestareaname}/{books}/{page}
Что я сделал, чтобы решить задачу № 1:
routes.MapRoute(
"Details",
"view/details/{id}/{booktitle}",
new { controller = "book", action = "Details", id = "*", booktitle= "*"});
routes.MapRoute(
"interests",
"books/{id}/{level1}/{level2}/{level3}/{page}",
new { controller = "book", action = "books", level1 = "*", level2 = "*", level3 = "*", id = "0", page = UrlParameter.Optional }
);
routes.MapRoute(
"profiles",
"books/{id}/{level1}/{level2}/{level3}/{page}",
new { controller = "book", action = "books", level1 = "*", level2 = "*", level3 = "*", id = "0", page = UrlParameter.Optional }
);
Я пришел к этому, заявив, что максимальный уровень должен быть установлен. Это только потому, что я не знал, как сделать его более динамичным.
Теперь проблема состоит в том, чтобы провести различие между категориями интересов и категориями профилей. Я сделал это, создав тот же маршрут, но с другим именем, и добавил имя маршрута при создании карты сайта.
Вторая проблема, которую я имею, - это карта сайта и панировочные сухари.
Я использую MVCsitemapprovider и функциональность DynamicNodes.
С картой сайта у меня проблема с отображением страницы с подробностями. Потому что книги будут появляться как в профилях, так и по интересам. И некоторые книги появятся в нескольких областях интересов или профилей.
В каждом случае я хотел бы видеть путь, который я использовал, чтобы добраться до этой книги.
Сначала я добавил подробные страницы для каждой книги в карту сайта, но это было сумасшествие. И создает дубликаты записей, которые не очень хорошо обрабатываются картами сайта.
Другой вариант состоял в том, чтобы передать маршрутизированные данные на странице списка на страницу сведений с помощью строки запроса, но это выглядело ужасно, и мне пришлось добавить логику для анализа строки запроса, чтобы имитировать хлебную крошку, что будет сложно, так как у меня только идентификатор самого низкого уровня.
Я провел много ночей и до сих пор не могу понять. Если кто-то может помочь или указать мне правильное направление, я очень благодарен.