DropDownList from IEnumerable
本文关键字:IEnumerable from DropDownList | 更新日期: 2023-09-27 18:26:53
我只想要一个由IEnumerable填充的简单下拉列表。我有
@model WebApplication4.Models.VENDOR
该模型包含BANK对象的IEnumerable。我希望下拉列表由这些对象的字段BANK_NAME填充。我是MVC和.NET的新手。这似乎是一项简单的任务,我只是不知道如何做到。
使用特定于视图的视图模型
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();