2010-04-29 2 views
0

Я пытаюсь настроить простой раскрывающийся список, но я, похоже, не могу заставить его привязываться к модели. Я использую Asp.Net MVC и nhibernate.Выпадающий список MVC не является обязательным для модели

Мой выпадающий список объявлен так:

<%= Html.DropDownListFor(model => model.Project, (IEnumerable<SelectListItem>)ViewData["Projects"], " -- Select -- ", new { name = "Project" })%> 

Я создал список выбора, как так:

ViewData["Projects"] = new SelectList(projectRepository.GetAll(), "EntityGUID", "Name", editEntity.Project); 

Это, кажется, привязать список выбора к Dropdown штрафа, но SelectedValue не задано. он показывает по умолчанию --- Выберите ---

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

entity.Project = projectRepository.GetById(new Guid(Request["Project"].ToString())); 

Я считаю, что я взял правильные беспорядки, чтобы этот элемент привязывался непосредственно к моей модели. Что-то я здесь не хватает?

Большое спасибо за ваше время, Род

ответ

6

OMG я нашел проблему ........

Мне потребовалось 3 дня, чтобы включить:

<%= Html.DropDownListFor(model => model.Aspect, (IEnumerable<SelectListItem>)ViewData["AspectTypes"])%> 

в:

<%= Html.DropDownListFor(model => model.Aspect.EntityGUID, (IEnumerable<SelectListItem>)ViewData["AspectTypes"])%> 

model.Aspect * * .EntityGUID ** Мне пришлось привязать падение к объектам guid, а не к самому объекту. Doh .... Я чувствую боль, много работы, чтобы наверстать упущенное.

Спасибо за ваше время.

+0

Эта проблема заключается в том, что она свяжет только свойство ID, а не текст, верно? – im1dermike

0

Это только догадка, так как ваш код выглядит хорошо для меня, но я не думаю, что вам нужно включить четвёртое параметр при определении вашей SelectList. Установка этого поля может препятствовать нормальному потоку вещей (переопределяя привязку модели), и я никогда не связывал DropDownList и имел SelectListSelectedValue.

Попробуйте удалить это и посмотреть, как это происходит.

SelectList(projectRepository.GetAll(), "EntityGUID", "Name"); 

Также I asked a question некоторое время назад о том, как реализовать DropDownList в MVC2, которые могут оказаться полезными.

+0

Thanks Kelsey, Я проверю статью. Параметр SelectedValue был только моим последним attemp. В целом я не использовал его. Я просто установил его, чтобы попытаться предварительно выбрать значение в форме редактирования. Я думаю, что это может быть проблемой в моем nhibernate-сопоставлении, а не для установки дочернего объекта. Я посмотрю вниз по этому маршруту. –

+0

Я получаю эту ошибку, когда я не устанавливаю Lazy, загружая false в сопоставление nhibernate. Инициализация [AgileThought.ERP.Domain.Property.Project # 8260fd30-97e7-46f4-818a-689f1e65a91c] -Невозможно инициализировать прокси - нет сеанса. –

+0

И когда я пытаюсь изменить его, я получаю следующую ошибку проверки модели. Значение 'fd38c877-706f-431d-b624-1269184eeeb5' недействительно. Это говорит о попытке подтолкнуть мой GUID к объекту. Вытягивание волос ... –

Смежные вопросы