MVC Модель по умолчанию Binder - связывайте многосекретный раскрывающийся от ilist

StackOverflow https://stackoverflow.com/questions/3703224

Вопрос

Я использую MVC 2.0 в приложении ASP.NET, используя nhibernate.

У меня есть рабочий вид, контроллер и уровень доступа к данным, используя Nibernate, который способен отображать и сохранять объект с отношением к другой сопоставленной сущности:

Человек -> местоположение

Он использует HTML HELPER HTML.DROPDONLLISTFOR () для отображения списка всех местоположений. Пользователь может выбрать одно из локаций из списка и нажмите Сохранить.

Модельное связующее по умолчанию правильно устанавливает значение местоположения на объекте человека. Это местоположение является Nhibernate Shapple Entity и создается и имеет значение идентификатора, которое было выбрано в раскрывающемся списке. Очевидно, что поскольку раскрывающийся список, который удерживает местоположения, имеет только идентификаторы локаций, остальные значения для местоположения являются NULL. Хорошо. Я только пытаюсь спасти человека со ссылкой на существующее место.

Итак, вот приходит осложнение. Нам нужно изменить отношения между двумя объектами. Теперь человек может иметь ссылку на многие места.

Person.Locations будет игрой

Мой вопрос в том, как вы получаете Binder модели по умолчанию, чтобы принять выбор из выбор из нескольких вариантов раскрывающийся и заполнить айлист.

Мне удалось сохранить коллекции сущностей в прошлом, используя синтаксис [индекс] .propertyName, как объяснение Филом Haacked .... http://haacked.com/Archive/2008/10/23/model-binding-to-a-list.aspx..

Выпуск здесь заключается в том, что у меня есть только раскрывающий список, и он будет опубликован обратно к модели повторяющегося клавиши с разными значениями:

Person.location.id: 2.
Person.location.id: 4.
Person.location.id: 5.

Это, к сожалению, не работает. Список местоположения продолжается возвращаться NULL.

Наш парень UI использует Slick JQuery Pluggin, чтобы отобразить элементы в списке выбора, поэтому я бы предпочел не использовать другой пользовательский интерфейс.

Любые идеи?

Это было полезно?

Решение

Одно предложение:

Измените имя вашего списка на «Местоположение», а затем в вашем методе действий включите параметр string[] locations

Если MVC может соответствовать именам правильно, вы должны получить массив выбранных элементов. Затем вы можете вручную разобраться с обновлением базы данных с соответствующими вставками и удалением.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top