asp.net mvc2 dropdownlistfor

asp.net mvc2 dropdownlistfor,asp.net,asp.net-mvc-2,Asp.net,Asp.net Mvc 2,我想在我的asp.net MVC2视图中创建一个dropdownlist,我的代码如下: foreach (var whiteout in Model) { %> <tr> <td> <%= whiteout.Field.NiceName%> <% Html.DropDownListFor("anyname", Model); %> <% }

我想在我的asp.net MVC2视图中创建一个dropdownlist,我的代码如下:

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

<%
                }
            }
%>
foreach(模型中的var变白)
{
%>
但我得到的错误是第二个参数不正确。第二个参数是一个列表。下面是如何在局部视图顶部声明模型:

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


请建议如何解决此问题?

帮助程序将
SelectList
作为第二个参数,将简单属性的lambda表达式作为第一个参数:

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

@Darin:我没有x=>x.SomeProperty,它显示x.list函数/集合函数,因为我的模型是collection@DotnetSparrow,如果您想使用强类型的
DropDownListFor
helper,那么您应该修改此部分的视图模型类型,这是我推荐的视图模型将有两个属性:一个要绑定的标量属性和一个包含下拉列表值的集合属性,下拉列表值将是可枚举的。然后,您将强式地将视图键入这个新的视图模型。@Darin:我使用了这个:并且我得到了数据绑定:“EnviroTracker.Entities.Whiteout”不包含带有“温度”这个名字。@Darin:我无法创建viewmodel,因为我调用的是这样的部分视图:Html.RenderPartial(“WhiteoutList”,Model.Whiteouts);而不是来自控制器。@DotnetSparrow,嗯,错误消息似乎不言自明。当然,就视图模型而言,您可以创建一个。您只需修改主视图模型的
Whiteouts
属性。它不应再是集合,而应是我建议您使用的新视图模型。
<%= Html.DropDownList(
    "SomeProperty", 
    new SelectList(Model.SomeList, "ValueProperty", "TextProperty")
) %>