2013-03-29 2 views
3

@Html.DropDownListFor требует списка SelectListItem. Есть ли способ использовать пользовательский объект здесь вместо выбора элемента списка и сообщить выпадающему списку, какие свойства настраиваемого объекта использовать для значения и текста? Или есть простой способ перевести объект моего клиента на SelectListItem?Использование пользовательского типа объекта в DropDownListFor - MVC 4

У меня есть объект Статус: общественной строки StatusCode {получить, установить;} строка StatusCodeDescription общественности {получить, установить;}

Так что сейчас я должен написать цикл перевести положение в a SelectListItem для всех моих списков ... Это просто кажется, что должен быть более простой способ ...

ответ

6

@ Html.DropDownListFor требует список SelectListItem. Есть ли способ использования настраиваемого объекта здесь вместо элемента списка и указать выпадающий список, какие свойства настраиваемого объекта использовать для значения и текста?

Вы можете использовать SelectList constructor принимая 3 аргумента: IEnumerable<T> и 2 строки, представляющие имена свойств значений и текста типа настраиваемого:

@Html.DropDownListFor(
    x => x.SelectedStatusCode, 
    new SelectList(
     Model.Satuses, 
     "StatusCode", 
     "StatusCodeDescription" 
    ) 
) 

В этом примере мы предполагаем, что Model.Satuses является свойство типа IEnumerable<StatusViewModel> где StatusViewModel содержит, по меньшей мере, 2 свойства связывать соответственно значение и текст выпадающего списка:

public class StatusViewModel 
{ 
    public string StatusCode { get; set; } 
    public string StatusCodeDescription { get; set; } 
    ... 
} 
+0

Удивительно, что отвечает на вопрос. В общем, я понимаю, как работают ламповые выражения, но я смущен этим. 'x => x.SelectedStatusCode' Что это значение хранится по адресу:' Model.Application.SelectedStatusCode'? – kralco626

+0

Извините, я не понимаю ваш вопрос. –

+0

Я думаю, я пытаюсь сказать, как представление знает, что такое 'x'? Как он знает, где в модели относится значение «x.SelectedStatusCode»? Предполагается ли, что это значение находится в том же месте, что и «Model.SelectedStatusCode»? – kralco626

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