我有一个更新控制器操作,在发布表单时调用。 在表单中有一个单选按钮,用于控制下拉字段的可见性 如果下拉字段可见并且我发布了表单,则数据库会更新,并且ModelState有效。
当隐藏下拉字段并发布表单时,它会发布并更新数据库。 但ModelState.IsValid = false,下拉报告为Missing value。
如何解决此问题?
[HttpPost]
public ActionResult Update(ResponseModel model)
{
//ModelState.IsValid = false when dropdown field hidden
//validate form fields
//update database
//if we are here, then db update successful
AjaxResponse.AddJsonItem("msg", "Success");
return Result();
}
答案 0 :(得分:2)
可能是你的ResponseModel有一个带有一些数据注释的属性,如[Required],当你取消选中你的收音机时,属性没有得到值。
发布模型并发布状态无效时收到的值(通过检入调试器)。
因为你只有一个属性而且是整数。您的模型状态无效,因为整数不能具有空值。当您将其隐藏时,模型没有int属性的值。要么用单选框上的隐藏字段替换下拉列表,要么使其成为可以为空的int。