Почему не работает модель на DropDown?
Что я делаю неправильно?
Чтобы проиллюстрировать мою проблему, я сделал следующее:Html.DropDownList и модельное переплетение
создал новый проект ASP.NET MVC (бета1) создал следующий класс:
HomeViewData : ViewDataDictionary
+List : SelectList
Добавлен ViewData к классу 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();%>
В результате я получаю страницу, которая имеет хорошее ниспадающее меню с тестом значений, test1 и test2.
Затем, после выбора значения, нажмите кнопку ввода (не беспокоиться о кнопке отправки) и посмотрите, как моя точка останова останавливает код. Я проверяю значение HomeViewData ... NULL
Если бы я сделать то же упражнение, но с текстовым полем, например, все работает отлично ...
--EDIT--
вещь Я попытался с этого поста:
- Добавление [Bind (префикс = «»)] атрибут к моему действию, как предложил Фил
- Добавление [Bind (префикс =»«)], чтобы увидеть, если это будет удалить ошибку «пустое имя не разрешено»
- Добавление имя параметра моего действия в имени моего элемента управления
Phil, сегодня я проверил ваш ответ на своей демонстрационной странице. Я получил ошибку, что имя не может быть нулевым. Поэтому я изменил атрибут bind на [Bind (Prefix = "")] Теперь он работает без ошибок, но также с тем же результатом, с которого я начал работать. – 2008-11-24 08:50:49