DropDownList from IEnumerable

本文关键字:IEnumerable from DropDownList | 更新日期: 2023-09-27 18:26:53

我只想要一个由IEnumerable填充的简单下拉列表。我有

@model WebApplication4.Models.VENDOR

该模型包含BANK对象的IEnumerable。我希望下拉列表由这些对象的字段BANK_NAME填充。我是MVC和.NET的新手。这似乎是一项简单的任务,我只是不知道如何做到。

DropDownList from IEnumerable

使用特定于视图的视图模型

public class CreateVendor
{ 
  public string VendorName {set;get;}
  public List<SelectListItem> Banks {set;get;}
  public int SelectedBank {set;get;}
}

在您的GET Action方法中

public ActionResult Create()
{
  var vm = new CreateVendor();
  //Hard coded for demo. You may replace with your db entries (see below)
  vm.Banks = new List<SelectListItem> {
     new SelectListItem { Value="1","Chase bank" },
     new SelectListItem { Value="2","PNCbank" },
     new SelectListItem { Value="3","BOA" } 
  };
  return View(vm);
}

在强类型为CreateVendor视图模型的视图中,可以使用DropDownListFor辅助方法。

@model CreateVendor
@using(Html.BeginForm())
{
  <label>Vendor name </label>
  <label>Bank</label>
  @Html.DropDownListFor(s=>s.SelectedBank,Model.Banks,"Select one")
  <input type="submit" />    
}

您的HttpPost操作方法将是

[HttpPost]
public ActionResult Create(CreateVendor model)
{
  // Read model.VendorName and model.SelectedBank
  //  var vendor = new Models.Vendor();
  //  vendor.Name = model.VendorName;
  //  vendor.BankId= model.SelectedBankId;
  //  yourDbContext.Vendors.Add(vendor);
  //  yourDbContext.SaveChanges();
  //  Redirect to a success action
}

如果要用表中的数据替换硬编码的Banks数据。将类/属性名称替换为实际的类/属性名。

  var db= new YourDbContext();
  vm.Banks = db.Banks.Select(s=>  new SelectListItem {
                                        Value=s.BANK_ID.ToString(), 
                                        Text=s.BANK_NAME }).ToList();