【发布时间】:2013-12-17 16:07:02
【问题描述】:
我对 DropDownListFor 助手的问题感到困惑。
我正在尝试为下拉列表分配一个值列表,如下所示:
型号
public Int32 TestID {get;set;}
public List<Int32> ListOfID {get;set;}
public IEnumerable<SelectListItem> TimeDD {get;set;}
控制器
public ActionResult Manage(int id){
MyModel model = new MyModel();
model.TimeDD = DropDownManager.TimeDD;
model.TestID = 12;
model.ListOfID = new List<Int32>{ 1,2,3,4,5,6,7};
return View(model);
}
在视图中我有以下内容:
@for(int i = 0; i< ListoFID.Count; i++){
<div>@Html.DropDownListFor(m=> m.TestID, Model.TimeDD)</div>
<div>@Html.DropDownListFor(m=> m.ListoFID[i], Model.TimeDD)</div>
}
我遇到的问题是 TestID 下拉列表工作正常,但是 ListoFID[i] 没有从下拉列表中选择值。 TimeDD 是一个时间列表,如下所示:
/// <summary>
/// The Time dropdown
/// </summary>
/// <param name="userID"></param>
/// <returns></returns>
public static IEnumerable<SelectListItem> TimeDD()
{
// new ctl
TimeControl ctl = new TimeControl();
// get drop down
IEnumerable<SelectListItem> result = ctl.Select().Select(m => new SelectListItem { Text = m.Time1, Value = m.TimeID.ToString() }).ToList();
// clean up
ctl.Dispose();
return result;
}
Time1 是 '09:30' 而 TimeID 是 1 - 48。我不知道这是怎么发生的!!一旦我引用一个对象,它就无法在正确的点选择下拉菜单。
编辑 此外,我的模型中有一个名为 OpeningTimes 的属性 - 这是针对公司保存的开放时间列表,如下所示:
ComapnyID DayID StartTime EndTime
1 1 19 32 -- e.g. Monday 09:00 - 17:30
当我循环播放开放时间时:
@for(int i=0; i< Model.OpeningTimes.Count; i++)
{
<tr>
<td>
@Html.DropDownListFor(m => m.OpeningTimes[i].StartTime, Model.TimeDD)
</td>
<td>
@Html.DropDownListFor(m => m.OpeningTimes[i].EndTime, Model.TimeDD)
</td>
</tr>
}
下拉菜单仍未被选中。我可以确认 StartTime 和 EndTime 确实有值并且是属性 int
【问题讨论】:
-
当你循环播放开放时间时......什么?
-
@RoyDictus 请查看编辑
-
我的回答仍然有效。您正在尝试映射不是模型的直接属性的东西,对于
DropDownListFor,它不起作用。 -
好的,有没有一种解决方法可以从对象列表中填充下拉列表,而不是我在模型中创建 MondayStartTime、MondayEndTime 属性?
标签: c# asp.net-mvc asp.net-mvc-4