我有一个非常奇怪的情况,我将复选框中的值发布到我的控制器,即使选中,它也不是真的!
我的视图模型的一部分:
public class BeslutIStortViewDTO
{
public BeslutIStortDTO BeslutIStort { get; set; }
public BeslutIStortListorDTO SelectListor { get; set; }
}
public class BeslutIStortDTO
{
public int id { get; set; }
public bool Ok { get; set; }
... other stuff
}
我的部分观点:
<div id="colOk" class="kolumn_header">
@Html.LabelFor(model => model.BeslutIStort.Ok)
@Html.CheckBoxFor(model => model.BeslutIStort.Ok, new { @class = "rensa", tabindex = 5 })
</div>
在传递给控制器的字符串中,当未选中该框时,一切似乎都正常:
BeslutIStort.Ok=false
但!当我检查它时:
BeslutIStort.Ok=&BeslutIStort.Ok=false
它在字符串中出现了两次,第一次没有值,其他的是false
,所以都是错误的。我当然希望只有一个,而那个是true
.
另一个有趣的发现是,在实际渲染的 html 中,复选框如下所示:
<input class="rensa" id="BeslutIStort_Ok" name="BeslutIStort.Ok" tabindex="5" type="checkbox" value="true" /><input name="BeslutIStort.Ok" type="hidden" value="false" />
它有一个隐藏的领域!
当我将值发布到服务器时,我使用 ajax 执行此操作,并且 data 参数定义如下:
data: $("#BisData").serialize(),
我希望有人可以帮助我对此有所了解,并帮助我对我的控制器进行一些“真实”:-)
===已解决===事实证明,我有这样的javascript:
$(".rensa").val("");
这使复选框不起作用。我添加了这个:
$(".rensaCheckbox").attr("选中", false);
对于复选框,现在它可以工作了。