来自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();