因此默认情况下@Html.CheckBoxFor
将在原始字段之后生成隐藏字段,例如
<input name="xxx" id="xxx" type="checkbox" .... data-val="true" value="true"/>
<input name="xxx" type="hidden" value="false"/>
当我使用$(form).serialize()
进行ajax提交时,如果选中该复选框,则帖子正文将包含两个xxx字段。 (xxx=true&&xxx=false
)这是预期的。但是ModelState.IsValid
返回false,错误是
System.InvalidOperationException:参数转换类型&#39; System.Collections.Generic.List`1 [System.String]&#39;输入&#39; System.Boolean&#39;失败,因为没有类型转换器可以在这些类型之间转换
我该如何解决这个问题?
更新: 它发生在我的WebAPI控制器上,我正在使用
进行常规模型绑定[HttpPost]
public void MyMethod(MyModel model)
{
if ( !ModelState.IsValid )
throw new HttpResponseException( HttpStatusCode.BadRequest );
}