为什么我得到ModelState.IsValid = false?

时间:2012-05-12 01:51:37

标签: asp.net-mvc-3

我有一个更新控制器操作,在发布表单时调用。 在表单中有一个单选按钮,用于控制下拉字段的可见性 如果下拉字段可见并且我发布了表单,则数据库会更新,并且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();
}

1 个答案:

答案 0 :(得分:2)

可能是你的ResponseModel有一个带有一些数据注释的属性,如[Required],当你取消选中你的收音机时,属性没有得到值。

发布模型并发布状态无效时收到的值(通过检入调试器)。


因为你只有一个属性而且是整数。您的模型状态无效,因为整数不能具有空值。当您将其隐藏时,模型没有int属性的值。要么用单选框上的隐藏字段替换下拉列表,要么使其成为可以为空的int。