Почему привязка моделей не работает в DropDown?
Что я делаю не так?
Чтобы проиллюстрировать свою проблему, я сделал следующее:
Создан новый проект asp.net MVC (beta1) Создан следующий класс:
HomeViewData : ViewDataDictionary
+List : SelectList
Добавлены данные представления в класс HomeController следующим образом
Homecontroller: Controller
+HomeViewData vd = new HomeViewData
В мой метод Home.Index () добавлены следующие строки
vd.list = new SelectList(new List<string>(){"test", "test1", "test2"});
return View("Index", vd);
И реплицировал тот же метод, но с другой подписью, чтобы перехватывать обратные вызовы.
[AcceptVerps(HttpVerbs.Post)]
public ActionResult Index(HomeViewdata d)
Здесь я добавил точку останова в первую строку кода.
Затем я добавил следующий код в свой Index.aspx
<%Html.BeginForm();%>
<%=Html.DropDownList("List")%>
<%Html.EndForm();%>
В результате я получаю страницу с красивым раскрывающимся списком со значениями test, test1 и test2.
Затем, выбрав значение, я нажимаю клавишу ввода (не заморачивался с кнопкой отправки) и смотрю, как моя точка останова останавливает код. Я проверяю значение HomeViewData ... NULL
Если я проделаю то же упражнение, но, например, с текстовым полем, все будет работать нормально ...
--EDIT--
Что я пробовал после этого поста:
- Добавление атрибута [Bind (Prefix = "")] к моему действию по предложению Фил
- Добавление [Bind (Prefix = "")], чтобы проверить, устранит ли это ошибку "пустое имя не разрешено"
- Добавление имени параметра моего действия в имя элемента управления