Только что начали играть с 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 вместо использования viewdata (который отлично работает) и передачи списка избранных с моделью - что принесет пользу немного очистить код - мне просто интересно, почему этот метод не работает...
Большое спасибо за любые предложения