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