2009-12-07 45 views
0

我在使用多選中獲取項目以獲取選定項時遇到問題。MultiSelectList問題,正在獲取類型

我有這樣的:

BookingObject bo = _bs.GetBookingObjects(bookingobjectID.Value).FirstOrDefault(); 
bo.BookingViews.Load(); 

MultiSelectList BookingViewsBookingObjects = new MultiSelectList(_bvs.GetBookingViews(), "BookingViewID", "BookingViewName", (IEnumerable<BookingView>)bo.BookingViews.ToList()); 

BookingViews < - > BookingViewsBookingObjects < - > BookingObjects

它是一種多對多的關係。 _bvs.GetBookingViews()返回的是BookingView的IQueryable,我似乎無法從bo.BookingViews中選擇項目。

這裏可能缺少什麼?我使用了錯誤的類型嗎?

/M

回答

1

也許你需要在最後一個參數「BookingViewID」,而不是IEnumerable<BookingView>作爲空穴IEnumerable<object>發送實際選擇的值這將是一個IEnumerable<int>如果BookingViewID爲int,這樣的:

MultiSelectList BookingViewsBookingObjects = new MultiSelectList(_bvs.GetBookingViews(), "BookingViewID", "BookingViewName", (IEnumerable<int>)bo.BookingViews.Select(a=> a.BookingViewID).ToList()); 

編輯:完整的代碼。

設置中的數據(控制器/視圖模型):

List<KeyValuePair<int, string>> List = new List<KeyValuePair<int,string>>();; 
      List.Add(new KeyValuePair<int, string>(1,"Value1")); 
      List.Add(new KeyValuePair<int, string>(2,"Value2")); 
      List.Add(new KeyValuePair<int, string>(3,"Value3")); 
      List.Add(new KeyValuePair<int, string>(4,"Value4")); 

      List<int> selected = new List<int>{1,2}; 

      ViewData["Multi"] = new MultiSelectList(List.AsEnumerable(), "Key", "Value", selected); 

(查看):

<%= Html.ListBox("MultiSelectList", ViewData["Multi"] as MultiSelectList)%> 

結果:

alt text http://www.diarioplus.com/files/pictures/multiselectlist.JPG

+0

沒有工作,同restult,它有count = 1,但該項目沒有被選中 – 2009-12-07 21:35:32

+0

更新了帖子,添加了完整例如,希望它可以提供幫助。 – JOBG 2009-12-08 00:58:40