Работа с созданными страницами в Composite C1 - PullRequest
4 голосов
/ 27 ноября 2011

В моем проекте ASP.Net, который я сейчас пытаюсь переместить на Composite, у меня возникают проблемы с нефизическими страницами.

Для простоты предположим, что у меня есть интернет-магазин, и у каждой категории в базе данных есть свой URL. (например: / myshop / clothes)

В проекте ASP.NET URL-адрес, подобный этому, будет перенаправлен на страницу Category.aspx, которая обрабатывает запрос и считывает содержимое категории из базы данных.

Композит, кажется, больше сосредоточен на "реальных" страницах, что было бы лучшим способом реализовать что-то подобное? (особенно маршрутизация)

И: Есть ли способ заставить эти сгенерированные страницы работать с такими модулями, как, например, Navigation.Path?

1 Ответ

5 голосов
/ 28 ноября 2011

Для создания меню и хлебных крошек вам нужно было бы справиться с этим самостоятельно, в конечном итоге с помощью события SiteMap.Resolve на SiteMapProvider для динамического подключения вашего "несуществующего"pages.

Что касается маршрутов, в C1 есть функциональность, которая разбирает URL-адрес на первую «реальную страницу» и передает вам лишнюю часть URL-адреса, с которой вы можете работать.Допустим, / myshop был вашей страницей магазина, и пользователь запросил / myshop / clothes, тогда все равно будет / myshow, который будет выполнен, и вы добавите туда код, который будет обрабатывать ваши категории.

Код, который будет извлекать «одежду» на вашей странице «myshop», будет Composite.Core.Routing.Pages.C1PageRoute.GetPathInfo(), и чтобы поручить C1 не выдавать ошибку 404, вы вызываете Composite.Core.Routing.Pages.C1PageRoute.RegisterPathInfoUsage(), чтобы C1 узнал, что «одежда»"была допустимой категорией.

Подробнее об API для нее здесь .

Если вам нужно обрабатывать разные ситуации, когда выбирается категория и когдапользователь просто нажимает / myshop напрямую, вы устанавливаете страницу MyShop для использования определенного шаблона, и там вы оборачиваете элемент <rendering:contentplaceholder> в функцию, которая имеет какую-то логику else-if.Если категория не выбрана, распечатайте содержимое <rendering:contentplaceholder>, в противном случае выполните некоторые поиски на основе категории и вместо этого распечатайте другое содержимое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...