【问题标题】:DropDownList from IEnumerable [closed]来自 IEnumerable 的 DropDownList [关闭]
【发布时间】:2015-12-15 22:48:31
【问题描述】:

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

@model WebApplication4.Models.VENDOR

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

【问题讨论】:

  • @Html.DropDownListFor(m => m.BANK_NAME, new SelectList(Model.BANKS, "ID", "Name"))假设您的BANK 对象包含属性IDName
  • 银行对象包含 BANK_ID 和 BANK_NAME。我收到第一个参数的错误,它是 HtmlHelper 类型的?什么是 HtmlHelper?
  • 显示您的模型。展示你的观点。显示您的 GET 方法。

标签: c# asp.net asp.net-mvc razor


【解决方案1】:

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

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
}

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

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

【讨论】:

  • 这真是一个很好的答案,谢谢。这有助于我理解工具和使用它们的过程,很棒的工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多