Связывание списков в Orchard CMS
Каков наилучший способ связать списки в Orchard?
Например, у меня есть один список компаний и один список проектов. Когда я создаю проект, я хочу связать его с компанией... в идеале, это выпадающий список, предварительно заполненный компаниями, которые я создал.
Каков наилучший способ сделать это?
PS я использую Orchard 1.3
Большое спасибо!
1 ответ
Чтобы увидеть пример предварительной установки флажка или раскрывающегося списка в представлении "Редактор", посмотрите на пример Orchard docs 1-N / NN.
Чтобы увидеть пример настройки взаимосвязи между двумя различными частями с помощью раскрывающегося списка, посмотрите на FeaturedItemSlider или ContentSlider (который был получен из предыдущих) модулей Orchard в Codeplex или галерее Orchard.
- Обновите ProjectPart, чтобы иметь свойство типа CompanyPart (при условии, что это имена, которые вы использовали для своих моделей).
- В файле Migrations.cs обновите таблицу ProjectPartRecord, чтобы иметь столбец CompanyPartRecord_Id типа int. Orchard настроит сопоставление с помощью NHibernate, чтобы таблица ProjectPartRecord могла быть присоединена к таблице CompanyPartRecord.
- Обновите конструктор класса ProjectPartDriver, чтобы иметь параметр типа IRepository. Сохраните экземпляр как свойство класса только для чтения того же типа (с именем что-то вроде _companiesRepo).
- Обновите метод ProjectPartDriver .Editor(), чтобы получить список компаний из _companiesRepo.
- Обновите другой метод ProjectPartDriver .Editor() (тот, который обрабатывает обратную передачу), чтобы установить для свойства CompanyPart ProjectPart значение Company, выбранное в раскрывающемся списке. Вы используете идентификатор компании из выпадающего списка для поиска CompanyPart из базы данных - я использую viewModels, чтобы упростить процесс, поэтому моя версия будет выглядеть так:
projectPart.CompanyPart = _companiesRepo.Get(companyId)
- Обновите шаблон EditorTemplate для ProjectPart, чтобы отобразить раскрывающийся список.
Я не уверен, как вы планируете использовать это отношение на переднем конце. Есть два способа сделать это. (1) вы можете создать собственный контроллер с соответствующим маршрутом, и в контроллере есть код для поиска деталей на основе установленных вами отношений, или (2) в методе ProjectPartDriver.Display() вы можете выполнить поиск с помощью IContentManager.