Как добавить выпадающий список MVC для списка<string>

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

Я борюсь с приведением моего списка в selectListItems, Может кто-нибудь, пожалуйста, помогите мне с этим.

контроллер

public ActionResult createNewUser()
{

    List<string> Customers = DBH.CustomerBranchGetAll();

    var Model = new UserModel
    {
       Customers = Customers
    };

    return View(Model);

}

модель

public class UserModel
{

   public int CustomerId { get; set; }
   public List<string> Customers { get; set; }
   public IEnumerable<SelectListItem> SelectCustomers
   {
      get { return new SelectList(Customers, "Id", "Name"); }
   }
}

Посмотреть

<div class="editor-label">
    @Html.Label("Choose Your Customer name")
</div>
<div class="editor-field">
    @Html.DropDownListFor(model => model.CustomerId, Model.SelectCustomers)
    @Html.ValidationMessageFor(model => model.Customers)
</div>

2 ответа

Решение

Читать SelectList

Ваш Customers не является объектом, который содержит Id & Name свойства. В вашем коде это просто список строк.List<string> Customers

Вам нужно определить класс со свойствами Name и Id и использовать его

public class Customer{
 public string Name{get;set;}
 public int Id {get;set;}
}

Затем подготовьте объект клиента с назначенными свойствами Id и Name.

List<Customers> customers = DBH.CustomerBranchGetAll(); 
var Model = new UserModel
{
   Customers = customers
};

Ввиду

  @Html.DropDownListFor(model => model.CustomerId, 
                        new SelectList(Model.Customers,"Id","Name"))

SelectList имеет конструктор, который принимает IEnumerable.. так что вам просто нужно сделать это:

@Html.DropDownListFor(model => model.CustomerId, new SelectList(Model.Customers))

Вы можете удалить SelectCustomers собственность целиком

Другие вопросы по тегам