簡體   English   中英

強類型模型:如何處理下拉列表?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM