我结合的WebAPI到我的发展,我投递到的WebAPI控制器的所有表单提交。 我注意到,复选框没有得到绑定到模型正确。 我使用的形式:
@Html.CheckBoxFor(m => m.HasVideo)
它产生一个复选框和一个隐藏的表单元件。 当我选中该复选框(意思是“真”值),该模型在我的WebAPI后绑定反映了HasVideo财产虚假。 我感动了整个方法转移到传统的MVC控制器,并如期绑定工作。
是否有解决类似的问题,或者是没有办法,我失去了一些东西?
我结合的WebAPI到我的发展,我投递到的WebAPI控制器的所有表单提交。 我注意到,复选框没有得到绑定到模型正确。 我使用的形式:
@Html.CheckBoxFor(m => m.HasVideo)
它产生一个复选框和一个隐藏的表单元件。 当我选中该复选框(意思是“真”值),该模型在我的WebAPI后绑定反映了HasVideo财产虚假。 我感动了整个方法转移到传统的MVC控制器,并如期绑定工作。
是否有解决类似的问题,或者是没有办法,我失去了一些东西?
不使用此HTML帮助:
@Html.CheckBoxFor(m => m.HasVideo)
试试这个来代替:
<input id="HasVideo" name="HasVideo" type="checkbox" value="true" @(((Model!=null) && Model.HasVideo) ? "checked=\"checked\"" : "" ) />
我已经看到了这一点。 没有太多关于这个在网络上,而应该多有记载的地方。 如果发现这两个标准的控制器会更喜欢假假真真,但是API控制器看起来像他们只是使用找到的最后一个值。
此页包含的信息可以支持这一假设的一些信息: http://blogs.msdn.com/b/jmstall/archive/2012/04/16/how-webapi-does-parameter-binding.aspx
这个问题前,其通常的ViewData / ViewBag干扰,这是一场噩梦,通常调试观察。
您可以在其中是给你的问题的功能添加ViewBag.Clear / ViewData.Clear。
干杯,J