Выбранное значение не отображается для выпадающего списка в MVC 4

#c# #asp.net #asp.net-mvc

#c# #asp.net #asp.net-mvc

Вопрос:

Модель

 public class LeadsVM
{
    public LeadsVM()
    {
        this.leadsList = new List<SingleLeadVM>();
    }

    public IList<SingleLeadVM> leadsList { get; set; }

    // For backup user and assign user 
    public IEnumerable<UserProfile> users { get; set; }

    public LeadDetailsVM leadDetailsVM { get; set; }

    [Display(Name = "Lead status")]
    public IEnumerable<LeadStatus> leadStatusList { get; set; }

}
  

Вид

 @for (int i = 0; i < Model.leadsList.Count; i  )
{    
@Html.DropDownListFor(model => Model.leadsList[i].assignedToUserId, new SelectList(Model.users, "UserId", "Email"), "Select user", new { data_val = false, data_users = Model.leadsList[i].leadId, @class = "usersList" })
}
  

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

Решение

 @Html.DropDownListFor(model => Model.leadsList[i].assignedToUserId, new SelectList(Model.users, "UserId", "Email", Model.leadsList[i].assignedToUserId), "Select user", new { data_val = false, data_users = Model.leadsList[i].leadId, @class = "usersList" })
  

Комментарии:

1. Если вы считаете, что нашли решение, вы можете ответить на свой вопрос и пометить его как ответ.

2. Также вместо IEnumerable make leadStatusList List<SelectListItem> это облегчит вашу жизнь

Ответ №1:

Исправлено. Оказалось, что я мог бы использовать 4-й параметр конструктора SelectList.

 @Html.DropDownListFor(model => Model.leadsList[i].assignedToUserId, 
new SelectList(Model.users, "UserId", "Email", Model.leadsList[i].assignedToUserId),
"Select user", 
new { data_val = false, data_users = Model.leadsList[i].leadId, @class = "usersList" })