2011-05-31 103 views
0

我想在我的asp.net MVC2視圖中創建一個下拉列表,我下面的代碼:asp.net MVC2 dropdownlistfor

foreach (var whiteout in Model) 
     { 
%> 
<tr> 
    <td> 
     <%= whiteout.Field.NiceName%> 
     <% Html.DropDownListFor("anyname", Model); %> 

<% 
       } 
      } 
%> 

,但我得到錯誤的第二個參數是不正確的。第二個參數是一個列表。以下是部分視圖頂部聲明的模型:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<EnviroTracker.Entities.Whiteout>>" %> 

請建議如何解決此問題?

回答

0

一個DropDownListFor幫手需要SelectList作爲第二個參數和lambda表達式到一個簡單的財產作爲第一:

<%= Html.DropDownListFor(
    x => x.SomeProperty, 
    new SelectList(Model.SomeList, "ValueProperty", "TextProperty") 
) %> 

如果你想使用弱類型DropDownList幫手,你可以手動指定屬性的名稱它將被綁定到,但第二個參數應該還是一個SelectList

<%= Html.DropDownList(
    "SomeProperty", 
    new SelectList(Model.SomeList, "ValueProperty", "TextProperty") 
) %> 
+0

@Darin:我沒有X => x.SomeProperty而是顯示x.list功能/採集功能,因爲我的模型是一個集合 – DotnetSparrow 2011-05-31 19:55:51

+0

@DotnetSparrow,那麼你應該修改這個部分的視圖模型類型,如果你想使用強類型的'DropDownListFor'助手這是我會推薦的。因此,您將引入另一個視圖模型,該模型將具有兩個屬性:要綁定的標量屬性以及包含將成爲可枚舉對象的下拉列表值的集合屬性。然後,您將強烈地將您的視圖輸入到這個新的視圖模型中。 – 2011-05-31 19:57:31

+0

@Darin:我用這個:<%= Html.DropDownList(「SomeProperty」,新的SelectList(模型,「FieldID」,whiteout.Field.NiceName) )%>我得到DataBinding:'EnviroTracker.Entities.Whiteout '不包含名稱爲「溫度」的財產。 – DotnetSparrow 2011-05-31 20:05:41