1

我有一个更新控制器操作,它在表单发布时被调用。在表单中有一个单选按钮,用于控制下拉字段的可见性如果下拉字段可见并且我发布表单,则数据库更新正常并且 ModelState 有效。

当下拉字段隐藏并且我发布表单时,它会发布并更新数据库。但是 ModelState.IsValid = false 并且下拉列表被报告为缺失值。

如何解决这个问题?

[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();
}
4

1 回答 1

2

可能是您的 ResponseModel 有一个用一些数据注释(如 [Required] )注释的属性,当您取消选中您的单选框时,该属性没有得到值。

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


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

于 2012-05-12T02:17:18.747 回答