2013-12-10 51 views
0

我對DropDownListFor幫助器的問題感到困惑。下拉列表不填充從列表MVC

我想值列表分配給下拉如下:

型號

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; 
     } 

如果時間1是'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

+0

當你遍歷開放時間....什麼? –

+0

@RoyDictus請參閱編輯 – CR41G14

+0

我的答案依然存在。你正試圖映射一些不是模型的直接屬性的東西,對於'DropDownListFor',它不起作用。 –

回答

1

DropDownListFor需要一個屬性映射到,而不是一個值。所以

@Html.DropDownListFor(m=> m.ListoFID[i], Model.TimeDD) /* the [i] kills it */ 

將無法​​正常工作。

+0

嗨,請參閱編輯。從我的模型引用對象和屬性時,這不起作用? – CR41G14

+0

它只是反對下降。所有其他元素,如文本框等工作正常 – CR41G14

0

而不是做一個int列表構建它像其他

List<SelectListItem> ls = new List<SelectListItem>(); 
foreach(var temp in Model.ListOfId){ 
    ls.Add(new SelectListItem() { Text = temp, Value = temp}); 
}