Ну, это должно быть легко, но ...Как проверить, что элемент выпадающий список был выбран
У меня есть выпадающий список, на мой взгляд:
<%= Html.DropDownList("ddlDistricts",
Model.clients.DistrictList,"-- select district --",
new { @class = "ddltext", style="width: 200px", onchange = "this.form.submit();" }) %>
Model.clients.DistrictList имеет тип SelectList.
Что я хочу сделать, это убедиться, что пользователь что-то выбрал (т. Е. «--- select district--», который имеет значение «», не выбран).
Так в контроллере у меня есть:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(string date, string month, FormCollection form)
{
if (form["chooseSchool"] == "Submit") // submit button is clicked
{
if (String.IsNullOrEmpty(form["ddlDistrict"]))
{
ModelState.AddModelError("ddlDistrict", "Please select a district");
}
else
{
// store some data somewhere .......
}
}
// create the modelData object .....
return View(modelData);
}
Но что происходит, есть исключение нулевой объект, когда он пытается повторно отобразить мнение, по-видимому, потому, что
ModelState [ «ddlDistricts»] Value. null, поэтому он не может применять ModelState ["ddlDistricts"]. Value.AttemptedValue как значение раскрывающегося списка.
Согласно тому, что я прочитал, в попытке поставить значение в поле, когда ModelState.IsValid является ложным, он пытается обеспечить значение для управления с ошибкой в следующем порядке:
(1) ModelState [ "имя_поля"]. Value.AttemptedValue
(2) Явное при условии, значение в управлении
(3) ViewData
так что применение ModelState, но свойство Value равно нулю, поэтому пытается доступ к генератору AttemptedValue исключение.
Каков ответ на этот вопрос? Как вы можете проверить, чтобы законный элемент был выбран из DropDownList?
Я уверен, что это легко, но я не могу это сделать, используя схему обработки ошибок ModelState.
Ах, ха! Это выглядит обнадеживающим. Мне придется подождать до пятницы, когда я вернусь к работе, чтобы попробовать. Я видел SetModelValue здесь и там, но не нашел действительно хорошего объяснения. – Cynthia