2012-01-21 66 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'助手。 –