Откуда DropDownListFor получает модель? - PullRequest
1 голос
/ 02 февраля 2012

Вы можете создать выпадающий список, используя

@Html.DropDownListFor(model => model.SelectedId, model.DropDownItems);

, но откуда DropDownListFor получает значение для передачи в model => model.SelectedId лямбду из?

1 Ответ

2 голосов
/ 02 февраля 2012

SelectedId - это просто целое число поля в модели.

модель передается из контроллера с помощью

return View(myModel);

И модель можно определить в представлении наtop

@model mymodelnamespace.RoomBookingInsert

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

Например, правильное имя поля будет RoomNo, если это прояснит его лучше.

@Html.DropDownListFor(model => model.RoomNo, model.Rooms);

Пока model.DropDownItems (или model.Rooms в моем примере) Содержит элементсо значением этого атрибута он будет установлен как выбранный элемент в списке по умолчанию.

Редактировать:

Если вы используете viewbag, а немодель, вместо этого используйте DropDownList.(каждый вход имеет расширение for для использования с моделями)

@Html.DropDownList("RoomNo", 
       new SelectList(ViewBag.Rooms as System.Collections.IEnumerable ?? Enumerable.Empty<SelectListItem>(), "RoomNo", "RoomName"),
       new { @value = @ViewBag.RoomNo})

Это выше, создает форму ввода с идентификатором RoomNo,

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

Последний бит устанавливает значение по умолчанию для содержимого @ViewBag.RoomNo.

. Вы также можетесоздайте список выбора в контроллере, а затем просто установите раскрывающиеся опции для объекта viewbag.myselectList.

...