Заполнение списка выбора из нескольких полей

Моя проблема довольно проста. Допустим, у меня есть раскрывающийся список с пользователями. в базе данных у меня есть 3 поля для моей пользовательской таблицы:

 user_id
 user_name
 user_firstname

в моем приложении MVC я хочу связать этих пользователей с проектами. поэтому я хочу раскрывающийся список.

теперь я хочу иметь список выбора с идентификатором в качестве значения, а имя И фамилия должны быть «текстом»

  SelectList sl = new SelectList(users, "user_id", "user_name");

теперь, как я могу получить имя также в тексте? это должно быть довольно легко, но кажется, что это не так...


person Stefanvds    schedule 25.02.2010    source источник


Ответы (2)


Используйте LINQ, чтобы преобразовать список пользователей в список SelectListItem.

var selectOptions = 
    from u in yourUserQuery
    select new SelectListItem { 
        Value = u.user_id, 
        Text = u.user_firstname + " " + u. user_name 
    };

Затем вы можете преобразовать это в SelectList, как считаете нужным. Лично мне нравится определять метод расширения .ToSelectList() для IEnumerable<SelectListItem>, но каждому свое.

person Seth Petry-Johnson    schedule 25.02.2010

Вам нужно построить список из вашей базы данных в нужном вам формате. Вот что я сделал после того, как моя база данных была прочитана в DataTable,

        IList<UsrInfo> MyResultList = new List<UsrInfo>();
        foreach (DataRow mydataRow in myDataTable.Rows)
        {
            MyResultList.Add(new UsrInfo()
            {
                Usr_CD = mydataRow["USR_NR"].ToString().Trim(),
                Usr_NA = mydataRow["USR_NA_LAST"].ToString().Trim() + " , " +
                         mydataRow["USR_NA_FIRST"].ToString().Trim()
            });
        }

        return new SelectList(MyResultList, "Usr_CD", "Usr_NA");
person John    schedule 25.02.2010
comment
Это в вашем контроллере или модели? - person Tony Borf; 25.02.2010