2012-01-21 12 views
2

MVC3アプリケーションに次のドロップダウンリストがあり、選択した項目に値が表示されていません。私のドロップダウンリストは、カスタムクラスのリストに含まれています。私のビューコードは以下の通りです。MVC3 @ Html.DropDownList選択された項目を設定していません

... 

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

そのようにしてみてください。DropDownListForヘルパーは、このラムダ式がコレクションで複雑なネストされたプロパティを表す場合、最初の引数として渡されるラムダ式から選択された値を決定することができません

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

私の知る限り。しかし、単純なプロパティで動作します:m => m.FooBar。私はそれがちょっとうんざりだと知っていますが、うまくいけば、これは将来のバージョンで修正されるでしょう。

+0

まずはお返事いただきありがとうございます。それは確かにおかしい。簡単な質問....どうやってそれを理解しましたか?どこにエラーがあるのか​​分かりますか?それはちょうどうまくいかなかった。 – PlTaylor

+1

@PlTaylor、私は最初にこの問題が発生したときに、ASP.NET MVCのソースコードを見て、DropDownListForヘルパーがどのように実装されているかを確認したので、わかりました。 –