来自IEnumerable的DropDownList

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

@model WebApplication4.Models.VENDOR 

该模型包含一个IEnumerable的BANK对象。 我希望下拉列表由这些对象的字段填充,BANK_NAME。 我是MVC和.NET的新手。 这似乎是一件容易的事,我只是不知道该怎么做。

使用特定于您的视图的viewmodel,

 public class CreateVendor { public string VendorName {set;get;} public List 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 { new SelectListItem { Value="1","Chase bank" }, new SelectListItem { Value="2","PNCbank" }, new SelectListItem { Value="3","BOA" } }; return View(vm); } 

在您的视图中,您可以使用DropDownListFor帮助器方法CreateVendor键入CreateVendor视图模型。

 @model CreateVendor @using(Html.BeginForm()) {   @Html.DropDownListFor(s=>s.SelectedBank,Model.Banks,"Select one")  } 

而你的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数据。 将Class / Property名称替换为您的实际类/属性名称。

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