Видях някои публикации за навигация и галета, но не намерих точно същия проблем. Ако обаче има, моля да ме извините и да ме насочите към него. Благодаря ти.
Моят случай :
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}
където interestareaname се добавя за удобни за потребителя URL адреси и продължава да се повтаря, докато слизате в йерархията. Резултатът тогава ще бъде: /books/1/project-management/prince2/books/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.
С картата на сайта имам проблем с показването на страницата с подробности. Защото книгите ще се появяват и по профили, и по интереси. И някои книги ще се появят в множество области на интереси или профили. Във всеки случай бих искал да видя пътя, по който стигнах до тази книга.
Първо добавих страниците с подробности за всяка книга към картата на сайта, но това беше лудост. И създава дублиращи се записи, които не се обработват много добре от карти на сайта. Друг вариант беше да предам данните за маршрута на страницата със списъка към страницата с подробности чрез низ на заявка, но това изглеждаше ужасно и след това трябва да добавя логика, за да анализирам низа на заявката, за да имитирам навигационния път, което ще бъде трудно, тъй като тогава имам само идентификатора от най-ниското ниво.
Прекарах много нощи и все още не мога да го разбера. Ако някой може да помогне или да ме насочи в правилната посока ще съм много благодарен.