Загрузка и отображение часто задаваемых вопросов по контексту - PullRequest
0 голосов
/ 26 марта 2011

Прежде всего, я не уверен, что это правильный заголовок для этого вопроса, но, надеюсь, я сделаю лучше, пытаясь объяснить, что мне нужно сделать.

Введение

Что я хочу сделать, это загрузить информацию о часто задаваемых вопросах относительно страницы, на которой я нахожусь. Скажем, я на странице www.domain.com/items/index, я хочу загрузить информацию о часто задаваемых вопросах, которая описывает, что можно сделать на этой странице и какие варианты доступны ... и т. Д. Затем пользователь переворачивается В строке поиска я хочу отобразить (сбоку страницы) короткий текст, который описывает поле поиска и как оно работает (например, сообщая им, что вы можете осуществлять поиск по ключевым словам или для определенного элемента или ... и т. д.). И так на остальных страницах и прочем на этих страницах.

Мозговой

Хорошо, так что я имею в виду до сих пор, и в чем я не уверен (поэтому я и задаю вопрос), так это:

  1. В базе данных создайте две таблицы: PageFAQ и ElementFAQ, где ElementFAQ является дочерним элементом PageFAQ. Причина, по которой я подумал об этом, заключается в том, что я загружаю PageFAQ и все ElementFAQ все вместе, выкидываю их на страницу и прячу их.
  2. На данный момент я бы отображал только сводный текст PageFAQ, в котором пользователю было бы больше рассказано о странице и некоторых доступных параметрах.
  3. Теперь, чтобы загрузить правильный ElementFAQ, нужно предпринять некоторые шаги на стороне сервера и клиента:
    • Убедитесь, что идентификаторы / имена ElementFAQ в базе данных соответствуют идентификаторам скрытых элементов div, которые были выгружены на страницу ранее (когда был загружен PageFAQ относительно страницы)
    • Когда пользователь переворачивает элемент (скажем, панель поиска), я использовал бы jQuery для поиска div с id faq_searchBar и отображал его innerHTML внутри бокового поля FAQ.

Задача

Все, что упомянуто выше, теоретически должно работать. Но я не могу придумать, как сопоставить «страницу», которую я сейчас просматриваю, и запись PageFAQ в базе данных. Как вы знаете, в ASP.NET MVC на самом деле нет страниц, есть только маршруты. Так есть ли какой-нибудь способ, которым я мог бы использовать данные маршрута для получения необходимого PageFAQ? Или я должен использовать строку запроса? Или есть лучший способ сделать это все вместе, желательно тот, который не использует магические строки.

UPDATE:

Было бы слишком много загружать PageFAQ и всех его дочерних элементов ElementFAQ и выводить их на страницу как скрытые div? Или лучше загрузить их через AJAX, когда пользователь переворачивает элемент?

Ваши предложения приветствуются.

1 Ответ

1 голос
/ 26 марта 2011

"страница", которую я сейчас просматриваю

string currentAction = RouteData.GetRequiredString("action");
string currentController = RouteData.GetRequiredString("controller");
string id = CalculateId(currentAction, currentController);
PageFAQ pageFAQ = Repository.GetFAQ(id);
...

CalculateId может просто связать текущий контроллер и действие с соответствующим идентификатором в базе данных или напрямую добавить эти столбцы в базу данных, а затем выполнить запрос:

string currentAction = RouteData.GetRequiredString("action");
string currentController = RouteData.GetRequiredString("controller");
PageFAQ pageFAQ = Repository.GetFAQ(currentAction, currentController);
...