[英]Strongly-Typed Model: How do I handle dropdown lists?
我创建了一个局部视图,它表示博客的管理端。 在我的模型中,我创建了如下所示的属性和方法。
public int HeaderImage { get; set; }
public IEnumerable<SelectListItem> GetHeaderImages()
{
List<SelectListItem> d = new List<SelectListItem>();
using (SqlConnection connection = new SqlConnection(
ConfigurationManager.ConnectionStrings["KineticBombardment"].ToString()))
{
using (SqlCommand cmd = new SqlCommand("select id, imagepath from blogheaderimages",
connection))
{
cmd.Parameters.Clear();
connection.Open();
cmd.ExecuteNonQuery();
using (SqlDataReader reader = cmd.ExecuteReader())
{
while(reader.Read())
{
SelectListItem item = new SelectListItem();
item.Text = reader["id"].ToString();
item.Value = reader["imagepath"].ToString();
d.Add(item);
}
}
return d;
}
}
}
视图:
<div class="input">
@Html.DropDownListFor(x => x.HeaderImage,
new SelectList(Model.HeaderImageList))
</div>
现在,整个目标是使用GetHeaderImages()
构建列表,然后将所选值存储在HeaderImage
属性中,并最终将其保存到数据库中。 现在,呈现选择列表,但不显示文本值,而是显示整个System.Web.MVC.SelectListItem
对象。
我想我要问的问题是:在模型中(从数据源)构建选择列表,然后用所选值填充该模型中的另一个属性的理想方法是什么?
您做对了,但是您必须告诉下拉列表将哪个字段显示为文本,将哪个字段作为值显示。
<div class="input">
@Html.DropDownListFor(x => x.HeaderImage,
new SelectList(Model.HeaderImageList, "Value", "Text"))
</div>
不要创建选择列表。 它只是期望的项目:
<div class="input">
@Html.DropDownListFor(x => x.HeaderImage, Model.GetHeaderImages())
</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.