2012-01-21 38 views
2

我在MVC3应用程序中有以下下拉列表,并且所选项目未显示值。我的下拉列表包含在自定义类的列表中。我的查看代码如下。MVC3 @ Html.DropDownListFor不填充所选项目

... 

for (int i = 0; i < Model.PartAttributes.Count; i++) 
{ 
    if (Model.PartAttributes[i].IsActive) 
    { 
     <div class="row inline-inputs"> 
      <label class="span5">@Model.PartAttributes[i].DisplayName:</label> 
      @Html.DropDownListFor(m => m.PartAttributes[i].Value, Model.PartAttributes[i].PartList, "Choose Part") 
      @Html.TextBoxFor(model => Model.PartAttributes[i].Value, new { @class = "mini" }) 
      @Html.ValidationMessageFor(model => Model.PartAttributes[i].Value) 
      @Html.HiddenFor(model => model.PartAttributes[i].AttributeName) 

     </div> 
    } 
} 
... 

下拉框下方的文本框中正确填写和列表选项正确填写。所选选项位于要选择的选项列表中。我能做什么错了?

回答

8

尝试这样的:

@Html.DropDownListFor(
    m => m.PartAttributes[i].Value, 
    new SelectList(
     Model.PartAttributes[i].PartList, 
     "Value", 
     "Text", 
     Model.PartAttributes[i].Value 
    ), 
    "Choose Part" 
) 

AFAIK的DropDownListFor助手是无法确定从如果此λ表达式表示具有集合复杂的嵌套特性,其作为第一个参数传递lambda表达式选定的值。尽管使用简单的属性:m => m.FooBar。我知道它有点烂,但希望这将在未来的版本中得到修复。

+0

首先感谢您的答案。它当然很糟糕。快速的问题....你怎么弄出来的?我在哪里可以看到甚至有错误?它只是没有工作。 – PlTaylor

+1

@PlTaylor,我知道它是因为当我第一次遇到这个问题时,我只看了ASP.NET MVC源代码,看到了如何实现'DropDownListFor'助手。 –