gpt4 book ai didi

c# - 如何验证下拉列表项是否已被选中

转载 作者:行者123 更新时间:2023-11-30 22:47:03 27 4
gpt4 key购买 nike

嗯,这一定很简单,但是......

我的 View 中有一个下拉列表:

<%= Html.DropDownList("ddlDistricts", 
Model.clients.DistrictList,"-- select district --",
new { @class = "ddltext", style="width: 200px", onchange = "this.form.submit();" }) %>

Model.clients.DistrictList 是 SelectList 类型。

我想做的是确保用户选择了一些东西(即,“--- select district--”,其值为“”,未被选中)。

所以在 Controller 中我有:

    [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);

}

但是当它试图重新显示 View 时发生了一个空对象异常,显然是因为

ModelState["ddlDistricts"].Value为null,所以不能将ModelState["ddlDistricts"].Value.AttemptedValue作为下拉列表的值。

根据我的阅读,当 ModelState.IsValid 为 false 时尝试向字段提供值时,它会尝试按以下顺序为错误的控件提供值:

(1) ModelState["fieldname"].Value.AttemptedValue

(2)控件中显式提供的值

(3) 查看数据

因此它正在应用 ModelState,但 Value 属性为 null,因此尝试访问 AttemptedValue 会产生异常。

这个问题的答案是什么?您如何检查以确保从 DropDownList 中选择了合法项目?

我确信这很容易,但我似乎无法使用 ModelState 错误处理方案来做到这一点。

最佳答案

ModelState.AddModelError("ddlDistrict", "Please select a district");
ModelState.SetModelValue("ddlDistrict", ValueProvider["ddlDistrict"]);

关于c# - 如何验证下拉列表项是否已被选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2377320/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com