как показать более одного элемента с помощью SelectList (это раскрывающийся список), я использую mvc3

это мой код:

ViewBag.idprofesor = new SelectList(db.Profesor, "IDProfesor", "nombre");

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


person user1462933    schedule 19.06.2012    source источник


Ответы (2)


Возможно, вам придется вручную создать список SelectListItems, который вручную указывает нужные поля. Вот так:

List<SelectListItem> professors = new List<SelectListItem>();
foreach(var professor in db.Professors) {
    professors.Add( new SelectListItem() { Text = professor.Fn + " " +  professor.Ln, Value = professor.Id } );
}
ViewVag.Professors = professors;

Тогда на ваш взгляд:

Html.DropDownListFor( m => m.Professor, ViewBag.Professors );
person Dai    schedule 19.06.2012
comment
спасибо за ваш ответ, у меня проблема с частью просмотра... @Html.DropDownListFor( m =› m.Professor, ViewBag.Professors ); этот код не работает - person user1462933; 19.06.2012

Вам просто нужно передать IEnumerable из SelectListItem в конструктор. Использование Linq для выбора из коллекции Professor:

@{
    var mySelectList =
        db.Professor.Select(prof => new SelectListItem(
            Text = prof.lastName + ", " + prof.nombre,
            Value = prof.IDProfessor
            )
        ).AsEnumerable();
}   

Используя Razor, вы сможете создать раскрывающийся список следующим образом:

@Html.DropDownList("mydropdownlist", mySelectList)

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

@Html.DropDownListFor(model => model.someproperty, mySelectList)
person McGarnagle    schedule 19.06.2012
comment
что я должен поместить в часть просмотра ?? - person user1462933; 19.06.2012
comment
@user1462933 user1462933 вы используете синтаксис Razor или ASPX в своих представлениях? Если Razor, посмотрите мое обновление (я заметил несколько синтаксических ошибок). - person McGarnagle; 19.06.2012
comment
да, я использую бритву.. но это все еще не работает.. когда я вставил это: @Html.DropDownListFor(model => model.idprofesor, ViewBag.SelectListItems) я получил сообщение об ошибке: методы расширения не могут быть динамически отправлены. .. - person user1462933; 20.06.2012
comment
@user1462933 user1462933 попробуйте объявить элементы как mySelectList в верхней части страницы Razor (мой ответ обновлен). - person McGarnagle; 20.06.2012