好了,这一定是容易的,但是......如何验证一个下拉列表中选中项目
我有我的观点的下拉列表:
<%= 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