我不知道如何从此代码中查看以显示下拉列表中的数据。请告诉我我可以做出哪些改变来解决我的问题。我尝试了一些观点,但这会导致错误。
型号:
public class Cities
{
public int cityid { get; set; }
public string Description { get; set; }
}
控制器:
public ActionResult Dropdownlist()
{
List<Citites> cityname= new List<Citites>();
string constring = ConfigurationManager.ConnectionStrings["dbx"].ConnectionString;
SqlConnection con = new SqlConnection(constring);
SqlCommand cmd = new SqlCommand("SELECT Cityid, Description FROM Cities", con);
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
Citites ci = new Citites();
ci.cityid = Convert.ToInt32(rdr["Cityid"]);
ci.Description = rdr[1].ToString();
cityname.Add(ci);
}
return View(cityname);
}
查看:
@model IEnumerable< RegisterForm_crud_mvc_.Models.Citites>
@{
ViewBag.Title = "Dropdownlist";
}
<h2>Dropdownlist</h2>
@Html.DropDownListFor(model => model.cityid, Model.citynanme)
答案 0 :(得分:2)
您的代码中存在许多问题。您的视图是强类型的City对象列表,并且您尝试使用Model.citynanme
。您的模型是城市对象列表,列表没有cityname属性(但列表中的每个项目都有)!
理想情况下,创建一个视图模型来表示视图中的数据。在您的情况下,您需要一个属性来存储所选的选项值,另一个属性用于构建SELECT元素的选项所需的数据。在你的情况下,它是城市列表。
public class MyViewModel
{
public List<SelectListItem> Cities { set;get;}
public int SelectedCityId { set;get;}
}
现在,在您的GET操作中,您创建了一个此对象,通过读取您的表填充Cities属性并将视图模型对象发送到视图。
public ActionResult Create()
{
var vm = new MyViewModel();
vm.Cities = GetCities();
return View(vm);
}
private List<SelectListItem> GetCities()
{
var options = new List<SelectListItem>();
var constring = ConfigurationManager.ConnectionStrings["dbx"].ConnectionString;
using (var c = new SqlConnection(constring))
{
using (var cmd = new SqlCommand("select Cityid, Description FROM Cities", c))
{
c.Open();
var rdr = cmd.ExecuteReader();
options = new List<SelectListItem>();
while (rdr.Read())
{
var o = new SelectListItem
{
Value = rdr.GetInt32(rdr.GetOrdinal("Cityid")).ToString(),
Text = rdr.GetString(rdr.GetOrdinal("Description"))
};
options.Add(o);
}
}
}
return options;
}
现在,在您的视图中,强烈键入MyViewModel,您将使用Html.DropDownListfor
辅助方法,您将使用Cities
属性作为selectList参数。
@model MyViewModel
@Html.DropDownListFor(model => model.SelectedCityId, Model.Cities)