ASP.NET MVC を使い始めたばかりで、次のような状況に遭遇しました。バグのように感じますが、そうでない場合は、説明をいただければ幸いです:)
ビューにはかなり基本的なものが含まれています
<%=Html.DropDownList("MyList", ViewData["MyListItems"] as SelectList)%>
<%=Html.TextBox("MyTextBox")%>
モデルを使用していない場合、値と選択された項目は期待どおりに設定されます。
//works fine
public ActionResult MyAction(){
ViewData["MyListItems"] = new SelectList(items, "Value", "Text"); //items is an ienumerable of {Value="XXX", Text="YYY"}
ViewData["MyList"] = "XXX"; //set the selected item to be the one with value 'XXX'
ViewData["MyTextBox"] = "ABC"; //sets textbox value to 'ABC'
return View();
}
しかし、モデルを介してロードしようとすると、テキストボックスには期待どおりに値が設定されていますが、ドロップダウンには選択されたアイテムセットがありません。
//doesnt work
public ActionResult MyAction(){
ViewData["MyListItems"] = new SelectList(items, "Value", "Text"); //items is an ienumerable of {Value="XXX", Text="YYY"}
var model = new {
MyList = "XXX", //set the selected item to be the one with value 'XXX'
MyTextBox = "ABC" //sets textbox value to 'ABC'
}
return View(model);
}
何か案は?私の現在の考えでは、おそらくモデルを使用する場合、ビューデータを使用して (正常に動作します)、選択リストをモデルに渡すのではなく、SelectList コンストラクターで選択した項目を設定することに制限されている可能性があります。これには利点があります。コードを少しきれいにする - なぜこの方法が機能しないのか疑問に思っています....
提案に感謝します