[英]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.