【问题标题】:html.dropdown is not retaining selected valuehtml.dropdown 不保留所选值
【发布时间】:2014-06-26 15:10:59
【问题描述】:

我可以成功填写表格并将数据提交到数据库。但是,如果模型验证失败,表单上的下拉菜单不会显示所选值。

我可以在 html 中看到下拉输入的值是正确的——但该值没有显示给用户。如何让下拉菜单显示值?

例子:

HTML 呈现:

<select class="field panel-field" id="TempAvailability_0__AvailabilityMinimumHours"     name="TempAvailability[0].AvailabilityMinimumHours" value="36"><option value=""></option>
<option value="40">40</option>
<option value="39">39</option>
<option value="38">38</option>
<option value="37">37</option>
<option value="36">36</option>
<option value="35">35</option>
</select>

查看:

string AvailabilityMinimumHours = "";
if(Model != null)
{
    AvailabilityMinimumHours = Model.AvailabilityMinimumHours.ToString();
}
 @Html.DropDownList("TempAvailability[0].AvailabilityMinimumHours", (IEnumerable<SelectListItem>)this.ViewBag.HoursList, new { @class = "field panel-field", @value=AvailabilityMinimumHours })

显示为:

【问题讨论】:

  • 从模型视图中设置AvailabilityMinimunHours后的值是多少?
  • 在上面的例子中,36。我的模型有正确的值,这就是我可以正确保存到数据库的原因。

标签: html asp.net-mvc asp.net-mvc-4 razor


【解决方案1】:

最后。经过几天的拉头发,我想通了。关键是在构建选择列表的控制器中设置选定的值。

我必须通过传入值来更改控制器,然后在构建时在列表中选择设置。

        private IEnumerable<SelectListItem> GetHoursList(byte? hour)
    {
        List<SelectListItem> hoursList = new List<SelectListItem>();
        var selected = false;
        hoursList.Add(new SelectListItem() { Value = "", Text = "" });
        for (int i = 40; i >= 5; --i)
        {
            if (hour == i)
            {
                selected = true;
            }
            hoursList.Add(new SelectListItem() { Value = i.ToString(), Text = i.ToString(), Selected = selected });
            selected = false;
        }
        return hoursList;
    }

        [HttpPost]
    public ActionResult ShowAvailability(Availability availability)
    {
        this.ViewBag.HoursList = this.GetHoursList(availability.AvailabilityMinimumHours);
        return PartialView("_AvailabilityPartial", availability);
    }

【讨论】:

    猜你喜欢
    • 2011-12-26
    • 1970-01-01
    • 2011-01-30
    • 2016-12-10
    • 2012-05-04
    • 2015-02-25
    • 2015-09-11
    • 1970-01-01
    相关资源
    最近更新 更多