Раскрывающийся список не отображает значение на странице редактирования - PullRequest
0 голосов
/ 07 ноября 2018

Я заполняю раскрывающийся список из таблицы, и проблема в том, что когда я перехожу на страницу редактирования, он не выбирает значение, а вместо этого показывает «Выбор компании».

Я использую таблицу по умолчанию AspNetUsers и добавляю в нее еще один столбец с именем Company (Integer). enter image description here
У меня есть другая модель и таблица под названием TBL_COMP, которые сопоставляются с AspNetUsers.

 public class TBL_COMP
{
    [Key]
    public int CompId { get; set; }
    public string CompDesc { get; set; }
}


В моих моделях (UserViewModels) у меня есть это

    public int Company { get; set; }

    [ForeignKey("Company")]
    public TBL_COMP TBL_COMP { get; set; }

Это выпадающий список:

@Html.DropDownListFor(m => m.Company, new SelectList(ViewBag.Company, "Value", "Text"), "Select Company", new { @class = "form-control" })

и это контроллер:

ViewBag.Company = new SelectList(db.TBL_COMP.ToList(), "CompId", "CompDesc", user.Company);

1 Ответ

0 голосов
/ 07 ноября 2018

ViewBag.Company уже содержится SelectList, просто наведите его на представление (создание другого SelectList из существующего SelectList бессмысленно):

@Html.DropDownListFor(m => m.Company, ViewBag.Company as SelectList, "Select Company", 
                      new { @class = "form-control" })

Или используйте строго типизированный IEnumerable<SelectListItem> вместо:

ViewModel

public class UserViewModels
{
    // other properties

    public List<SelectListItem> Companies { get; set; }
}

Действие контроллера

var model = new UserViewModels();

model.Companies = db.TBL_COMP.Select(x => new SelectListItem { Text = x.CompDesc, Value = x.CompId }).ToList();

View

@Html.DropDownListFor(m => m.Company, Model.Companies, "Select Company", new { @class = "form-control" })
...