Asp.net mvc 3 为什么我得到ModelState.IsValid=false?
我有一个更新控制器动作,在表单发布时调用。 表单中有一个单选按钮,用于控制下拉字段的可见性 若下拉字段可见,并且我发布了表单,那个么数据库会很好地更新,ModelState是有效的 当下拉字段隐藏并且我发布表单时,它会发布并更新数据库。 但是ModelState.IsValid=false,下拉列表被报告为缺少值 如何解决这个问题Asp.net mvc 3 为什么我得到ModelState.IsValid=false?,asp.net-mvc-3,Asp.net Mvc 3,我有一个更新控制器动作,在表单发布时调用。 表单中有一个单选按钮,用于控制下拉字段的可见性 若下拉字段可见,并且我发布了表单,那个么数据库会很好地更新,ModelState是有效的 当下拉字段隐藏并且我发布表单时,它会发布并更新数据库。 但是ModelState.IsValid=false,下拉列表被报告为缺少值 如何解决这个问题 [HttpPost] public ActionResult Update(ResponseModel model) { //ModelState.IsVali
[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();
}
可能是您的ResponseModel有一个用一些数据注释(如[Required])注释的属性,当您取消选中单选框时,该属性不会得到值 发布模型,并在状态无效时发布收到的值(通过签入调试器)
因为你只有一个属性,那就是整数。您的模型状态无效,因为整数不能有空值。将其隐藏时,模型没有int属性的值。要么用radio box上的隐藏字段替换下拉列表,要么将其设置为可为空的int。public class ResponseModel{public int Limit{get;set;}}}我已经检查过了。公共类响应模型{public int Limit{get;set;}}}Great catch Hasan。修复很容易。刚刚在下拉列表中为默认选定值添加了一个值。