【问题标题】:Strongly-Typed Model: How do I handle dropdown lists?强类型模型:如何处理下拉列表?
【发布时间】:2012-01-04 21:29:33
【问题描述】:

我创建了一个局部视图,它代表博客的管理端。在我的模型中,我创建了如下所示的属性和方法。

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 对象。

我想我要问的问题是:在模型中(从数据源)构建选择列表,然后用所选值填充该模型中的另一个属性的理想方法是什么?

【问题讨论】:

  • 如果答案对您有帮助,请投票

标签: c# asp.net-mvc model html-select


【解决方案1】:

您做对了,但您必须告诉下拉列表将哪个字段显示为文本以及将哪个字段显示为值。

 <div class="input">
        @Html.DropDownListFor(x => x.HeaderImage,
           new SelectList(Model.HeaderImageList, "Value", "Text"))
   </div>

【讨论】:

    【解决方案2】:

    不要创建选择列表。它只需要这些项目:

    <div class="input">
        @Html.DropDownListFor(x => x.HeaderImage, Model.GetHeaderImages())
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多