Вывод ASP.NET MVC + Populate - программирование

Вывод ASP.NET MVC + Populate

В моем представленииModel у меня есть:

public class PersonViewModel
{
    public Person Person { get; set; }
    public int SelectRegionId { get; set; }
    public IEnumerable<SelectListItem> Regions { get; set; }
}

Но что мне нужно сделать в моем контроллере/представлении, чтобы показать значения? Что у меня сейчас:
Контроллер:

public ActionResult Create()
{
     var model = new ReUzze.Models.PersonViewModel
     {
         Person = new Person(),
         Regions = new SelectList(this.UnitOfWork.RegionRepository.Get(), "Id", "Name")
     };
     return View(model);
}

Вид:

 <div class="form-group">
     @Html.LabelFor(model => model.Person.Address.Region)
     @Html.DropDownListFor(model => model.SelectRegionId, new SelectList(Model.Regions, "Id", "Name"), "Choose... ")
 </div>

Но это приводит к ошибке:

Cannot implicitly convert type 'System.Web.Mvc.SelectList' to 'System.Collections.Generic.IEnumerable<System.Web.WebPages.Html.SelectListItem>'. An explicit conversion exists (are you missing a cast?)
4b9b3361

Ответ 1

В вашей модели ViewModel есть свойство типа "IEnumerable", но SelectList не удовлетворяет этому типу. Измените свой код следующим образом:

public class PersonViewModel
{
    public Person Person { get; set; }
    public int SelectRegionId { get; set; }
    public SelectList Regions { get; set; }
}

Вид:

<div class="form-group">
     @Html.LabelFor(model => model.Person.Address.Region)
     @Html.DropDownListFor(model => model.SelectRegionId, Model.Regions, "Choose... ")
 </div>

Ответ 2

Вы дважды создаете экземпляр SelectList. Избавьтесь от одного из них:

@Html.DropDownListFor(model => model.SelectRegionId, Model.Regions, "Choose... ")