好了,這一定是容易的,但是......如何驗證一個下拉列表中選中項目
我有我的觀點的下拉列表:
<%= 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」]值。爲空,所以它不能將ModelState [「ddlDistricts」]。Value.AttemptedValue作爲下拉列表的值。
據我已閱讀,在試圖提供值字段時ModelState.IsValid是假的,它試圖用順序錯誤的控制提供一個值:
(1)的ModelState [ 「字段名」]。Value.AttemptedValue
(2)在控制顯式提供值
(3)的ViewData
所以它被施加的ModelState,但Value屬性爲空,因此試圖訪問AttemptedValue生成器一個例外。
這是什麼答案?如何檢查以確保從DropDownList中選擇了合法的項目?
我確定這很容易,但我似乎無法使用ModelState錯誤處理方案。
啊哈!這看起來很有希望..我將不得不等到星期五,當我回去工作嘗試它。我在這裏和那裏看到了SetModelValue,但是還沒有找到一個很好的解釋。 – Cynthia 2010-03-04 07:23:18