Html.DropDownList - valor não definido via ViewData.Model do ASP.NET MVC
Começaram a jogar com o ASP.NET MVC e tropeçaram na seguinte situação. Parece muito com um bug, mas se não, uma explicação seria apreciada :)
O View contém coisas bastante básicas
<%=Html.DropDownList("MyList", ViewData["MyListItems"] as SelectList)%>
<%=Html.TextBox("MyTextBox")%>
Quando não estiver usando um modelo, o valor e o item selecionado são definidos conforme o esperado:
//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();
}
Mas, ao tentar carregar por meio de um modelo, a caixa de texto tem o valor definido conforme o esperado, mas o menu suspenso não obtém um conjunto de itens selecionado.
//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);
}
Alguma ideia? Meu pensamento atual é que, talvez ao usar um modelo, estamos restritos a definir o item selecionado no construtor SelectList em vez de usar os dados de exibição (que funcionam bem) e passar a lista de seleção com o modelo - o que teria o benefício de limpar um pouco o código - só estou me perguntando por que esse método não funciona ....
Muito obrigado por todas as sugestões