如何保留ASP.NET下拉列表选定项

时间:2015-07-15 21:03:07

标签: asp.net-mvc asp.net-mvc-4

我试图在用户更改下拉列表项后保留下拉列表的选定值但是它无法按预期工作我想要的是在下拉列表中保留所选项但是它默认为{{1}每次我从下拉列表中选择项目,一旦用户更改它回发页面(我知道MVC中没有回发)

我在这里做错了什么?

Select Company

<div class="form-group">
   @using (Html.BeginForm("Index", "Home", FormMethod.Post, new { @id = "form_dropdown" }))
   {
      @Html.DropDownListFor(m => m.ListOfCompanies, 
      new SelectList((System.Collections.IEnumerable)Model.ListOfCompanies, "Value", "Text"), 
      "Select Company", new { @class = "form-control", Name = "sel" })
  } 

型号:

[HttpPost]
public ActionResult Index(string sel)
{
   var vModel = new EmployeeViewModel();
   vModel = _db.GetEmployee.ToList();

   //load list of companies:

   var company =   _db.LoadComapny.ToList();          
   IEnumerable<SelectListItem> result = model.Select(b => new SelectListItem
   {
       Value = b.Value,
       Text = b.Text,
       Selected = b.Text == sel
   }).ToList(); 

   vModel.ListOfCompanies = company;
   vModel.SELECTED_COMPANY = sel;

   return View(vModel);
}

2 个答案:

答案 0 :(得分:1)

将其更新为

@Html.DropDownListFor(m => m.SELECTED_COMPANY, 
      new SelectList((System.Collections.IEnumerable)Model.ListOfCompanies, "Value", "Text"), 
      "Select Company", new { @class = "form-control", Name = "sel" })

答案 1 :(得分:1)

DropdownListFor有两个重要的argumnets:

  1. 第一个带有所选项目索引的变量(主要是lambda表达式( => ))
  2. 第一个是SelectList项目可用

    @Html.DropDownListFor(m => m.SELECTED_COMPANY, 
        new SelectList(Model.ListOfCompanies, "Value", "Text"), 
        "Select Company", new { @class = "form-control", Name = "sel" })