Как привязать KendoUI DropDownListFor к ViewData или ViewBag?

Я пытаюсь использовать KendoUI DropDownListFor для внешнего ключа моей модели и привязать его к полному списку ViewData/ViewBag, но, похоже, это не работает, я что-то упустил?

@(Html.DropDownListFor(model => model.Hotel.HotelStatusId, ViewData["HotelStatuses"] as SelectList))

Кажется, это работает, но мне потребовалось создать модель представления.

@(Html.Kendo().DropDownListFor(model => model.Hotel.HotelStatusId)
                              .BindTo(Model.HotelStatuses)
                              .OptionLabel("select hotel status...")
                              )

Я избегаю использования модели представления, потому что мне нужно отправить данные обратно в ASP MVC. С пользовательской моделью просмотра я не мог правильно ее связать.


person JeeShen Lee    schedule 01.01.2013    source источник
comment
Выдает ли он исключение, если вы используете его вместо использования оператора AS?   -  person Petur Subev    schedule 01.01.2013
comment
@Pechka, нет, это не исключение.   -  person JeeShen Lee    schedule 02.01.2013
comment
Честно говоря, я понятия не имею тогда   -  person Petur Subev    schedule 02.01.2013


Ответы (1)


Viewbag/ViewData можно заполнить в контроллере следующим образом:

ViewData["HotelStatuses"] = 
new SelectList(db.HotelStatuses, "HotelStatusId", "HotelStatusText");

И в представлении вы можете использовать ViewData/ViewBag:

 @(Html.Kendo().DropDownListFor(model => model.Hotel.HotelStatusId)
 .BindTo(ViewData["HotelStatuses"] as SelectList))
 .DataTextField("Text") 
person Bahman    schedule 21.01.2013
comment
Это сработало, но сначала мне пришлось установить DataTextField. .BindTo(ViewData[HotelStatuses] as SelectList).DataTextField(Text) - person Tom; 14.01.2014
comment
Мне пришлось использовать .BindTo(ViewBag.HotelStatuses) - person user1477388; 14.04.2015