【问题标题】:ASP MVC3 DropDownListFor with blank default option带有空白默认选项的 ASP MVC3 DropDownListFor
【发布时间】:2014-10-01 05:55:28
【问题描述】:

我正在我的模型列表中填充一小组下拉列表项:

    SecSellerCodes = (from s in db.DropDownValues
                        where s.Field.Equals("SecSellerCd") &&
                            s.DisplayPage.Equals("Agent Create")
                        select s).Select(x => new SelectListItem
                            {
                                Text = x.DisplayValue,
                                Value = x.AllowedValue
                            }).Distinct().ToList();

我希望用户能够从上述查询中提取的项目列表中进行选择,并在列表顶部包含一个空白选项,以防他们不希望填充此特定字段。

使用以下帮助程序,一旦页面加载/用户保存到数据库,它就可以正常工作。但是,如果他们需要重新加载页面并进行调整,则始终选择空白的string.Empty 项(无论表中的值如何)。

@Html.DropDownListFor(model => model.SecSellerCd, Model.SecSellerCodes, string.Empty)

知道使用哪个助手/技术来完成此任务吗?

【问题讨论】:

  • 如果属性SecSellerCd 的值与SelectList 中的值之一匹配(即x.AllowedValue),那么它将被选中。你确定有匹配的值吗
  • 是的。在这种情况下,显示值和允许值相同。我已验证该字段中存在有效值。
  • 奇怪。尝试将SecSellerCodes 创建为SelectList - var values = (from s in db.DropDownValues where ... select s); SecSellerCodes = new SelectList(values, "AllowedValue", "DisplayValue");
  • 所以当它被保存到数据库时,看起来每个值的末尾都有一个额外的空间。不知道这是怎么发生的,但这就是导致程序关闭的原因。

标签: c# asp.net-mvc asp.net-mvc-3 html.dropdownlistfor


【解决方案1】:

在您的模型代码中,您需要将选定的值分配给 model.SecSellerCd。因此,如果您希望他们对之前的选择进行更改,那么您还需要将所选值保存在数据库中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多