0

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

模型:

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,但是当我显示下拉列表时它没有被选中,为什么?

谢谢

4

2 回答 2

2

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

因为9and09是 2 个不同的字符串。因此,请确保您有完全匹配:

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

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

还要确保为该视图提供服务的控制器操作有效地将值设置为视图模型上9Schedule[i].OpenHour整数属性。


更新:

在视图中可能还需要像这样调用助手:

@Html.DropDownListFor(
    m => m.Schedule[i].OpenHour, 
    new SelectList(Model.ScheduleHours, "Value", "Text", Model.Schedule[i].OpenHour)
)
于 2013-09-25T17:11:26.460 回答
0

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

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

运行页面时将选择上述值。

于 2013-09-26T06:14:19.133 回答