如何在从数据库中检索的MVC下拉列表中显示值

时间:2013-12-23 13:40:15

标签: asp.net-mvc

请任何机构告诉新手如何在多个值的下拉列表中显示特定值。例如我在我的下拉列表中有印度,澳大利亚,中国,英国,我已将该国更新为中国,所以当下次有人查看详细信息时,他会在下拉列表中看到中国。视图中的代码如下:

@Html.DropDownList("list",ViewData["list"] as SelectList)
                                    @Html.ValidationMessageFor(model => model.Country)

和.cs页面上的代码如下:

var list = new SelectList(new[]
                                          {
                                              new {ID="0",Name="Select"},
                                              new{ID="1",Name="Australia"},
                                              new{ID="3",Name="United States"},
                                              new {ID="4",Name="United Kingdom"},
                                              new{ID="5",Name="Europe"},
                                              new{ID="6",Name="Canada"},
                                              new {ID="7",Name="India"},
                                              new {ID="8",Name="China"},
                                              new{ID="9",Name="Japan"},
                                              new{ID="10",Name="New Zealand"},
                                          },
                            "ID", "Name", 1);
            ViewData["list"] = list;

1 个答案:

答案 0 :(得分:1)

这是一个不使用ViewData的解决方案,但使用视图模型在操作方法和视图之间传输数据。假设您正在尝试编辑客户记录。所以你将有一个像这样的视图模型

public class CustomerEditVM
{
  public int CustomerID { set;get;}
  public string Name { set;get;}
  public List<SelectListItem> Countries { set;get;}
  public int SelectedCountry { set;get;}
}

并在你的行动方法

public ActionResult View(int id)
{
  var customer=repositary.GetCustomer(id);
  var customerEditVM=new CustomerEditVM { CustomerID=id,Name=customer.Name};
  customerEditVM.Countries=GetCountries();

  //Setting the selected item value here
  customerEditVM.SelectedCountry=customer.CountryID 

  return View(customerEditVM);
}
public List<SelectListItem> GetCountries()
{
  return new List<SelectListItem> {
     new SelectListItem{ Value="1",Text="India"},
     new SelectListItem{ Value="2",Text="China"},
     new SelectListItem{ Value="3",Text="US"},
  }
}

您的视图应该强烈输入CustomerEditVM,我们将使用Html.DropDownListFor帮助方法。

@model YourNamespaceHere.CustomerEditVM
@using(Html.BeginForm())
{
 Country : 
 @Html.DropDownListFor(s=>s.SelectedCountry,Model.Countries,"Select")
 <input type="submit" value="Save" />
 @Html.HiddenFor(s=>s.CustomerID)
}