ビューに以下のコードがあります。(index.cshtml)
バインディングの問題
- 最初のドロップダウンは、'ChildItem' エディター テンプレートに基づいて正しい値を選択します。
- インライン ドロップダウン リストを使用した 2 番目の例は機能しません。ドロップダウン値を表示するためだけにエディター テンプレートを作成したくありません。
- 奇妙なことに、TextBoxFor は正しい値を表示します。これは、ドロップダウン リストだけの問題のようです。
2 番目のドロップダウンが機能するようにバインドを修正するにはどうすればよいですか? デバッグしました。ViewData.Eval が から正しい値を取得していないようです_.Children[i].ChooseId
。
更新 (バグ)これは、MVC フレームワークhttp://aspnet.codeplex.com/workitem/8311
で確認されたバグ (優先度が低い、どうやって?) です。
@using (Html.BeginForm())
{
for (int i = 0; i < Model.Children.Count(); i++)
{
<p>A: @Html.EditorFor(_ => _.Children[i], "ChildItem")</p>
<p>B: @Html.DropDownListFor(_ => _.Children[i].ChooseId, TestModel.PeopleSelect)</p>
}
<button type="submit">GO</button>
}
を使用してみましたがDropDownListFor(_ => Model.Children[i].ChooseId)
、同じ結果です。
usingTextBoxFor(_ => _.Children[i].ChooseId)
は正しい値を示しています。
参考までにこちらChildItem.cshtml
@using dropdown.Controllers
@using dropdown.Models
@model dropdown.Models.TestPerson
@Html.DropDownListFor(_ => _.ChooseId, TestModel.PeopleSelect)
次のようになります。