DropDownListFor不从数据库中选择值

时间:2013-09-25 17:06:35

标签: c# asp.net-mvc-4 razor

我正在尝试使用来自数据库的选定值(开放时间)来显示办公室开放时间的下拉列表,但它没有选择值:

型号:

public class ScheduleViewModel
{
    public int Id { get; set; }
    public int OpenHour { get; set; }
}

一天中所有小时的下拉列表:

private IEnumerable<SelectListItem> ScheduleHoursDropDownList()
{
    List<SelectListItem> hours = new List<SelectListItem>();

    for (int i = 0; i <= 23; i++)
    {
        hours.Add(new SelectListItem
            {
                Text = i.ToString("00"),
                Value = i.ToString("00")
            });
    }

    return hours;
}

查看:

@Html.DropDownListFor(m => m.Schedule[i].OpenHour, Model.ScheduleHours)

我在数据库中有整数9,但是当我提供下拉列表时它没有被选中,为什么?

由于

2 个答案:

答案 0 :(得分:2)

  

我在数据库中有整数9,但是当我提供下拉列表时它没有被选中,为什么?

因为909是两个不同的字符串。因此,请确保您完全匹配:

hours.Add(new SelectListItem
{
    Text = i.ToString("00"),
    Value = i.ToString(),
});

请注意,对于Value的{​​{1}}属性,您不应该应用SelectListItem字符串格式。

另外,请确保为此视图提供服务的控制器操作有效地将00的值设置为视图模型上的9整数属性。


更新:

可能还需要在视图中调用这样的帮助程序:

Schedule[i].OpenHour

答案 1 :(得分:0)

您希望选择哪个值,然后添加属性selected=true

hours.Add(new SelectListItem
{
    Text = i.ToString("00"),
    Value = i.ToString(),
    Selected = true
});
运行页面时将选择

以上值。