我四处寻找类似的问题,但找不到这个特定的问题。我怀疑这很容易解决,但我以前从未见过它,而且我尝试过的一切都无法解决。
使用 MVC 5、C# 模型和 Razor 视图。我有一个模型,其中包含大约 20 个左右的 bool 实体,用于复选框。用户最初选择他们的复选框作为初始表单插入的一部分。问题在于进行更新时。
20 个复选框中有 18 个按应有的方式更新。这是一个可以正常工作的示例。除了型号名称当然不同之外,所有 20 个看起来都完全一样。
<div class="form-group ">
<label class="d-inline-flex customcheckPsNp pb-1">
@Html.CheckBoxFor(model => model._GetCompleteGroup1.MvrInFile)
<span class="checkmarkPsNp"></span>
</label>
<label for="MvrInFile" class="lblPolicyServiceList ml-1">MVR In File</label>
</div>
这是为此生成的html。
<label class="d-inline-flex customcheckPsNp pb-1">
<input data-val="true" data-val-required="The MvrInFile field is required." name="_GetCompleteGroup1.MvrInFile" type="checkbox" value="true">
<input name="_GetCompleteGroup1.MvrInFile" type="hidden" value="false">
<span class="checkmarkPsNp"></span>
</label>
这些复选框被发送到控制器并更新为真或假。除了他们两个。
这是一个有问题的 Checkboxfors 和生成的 HTML。我怀疑这是问题所在,也是我不太明白的部分。生成的 HTML 与其他 HTML 不同。
<div class="form-group ">
<label class="d-inline-flex customcheckPsNp pb-1">
@Html.CheckBoxFor(model => model._GetCompleteGroup1.LocInFile)
<span class="checkmarkPsNp"></span>
</label>
<label for="LocInFile" class="lblPolicyServiceList ml-1">LOC In File</label>
</div>
现在在控制台元素中找到生成的 HTML
<label class="d-inline-flex customcheckPsNp pb-1">
<input name="_GetCompleteGroup1.LocInFile" type="checkbox" value="true">
<input name="_GetCompleteGroup1.LocInFile" type="hidden" value="false">
<span class="checkmarkPsNp"></span>
</label>
如您所见,生成的 HTML 的差异是不同的。有谁知道为什么以及如何解决这个问题?我已经尝试从上面手动创建相同的 html 来代替这个,但这仍然不起作用。我已经查看了所有对齐的模型。如果这些布尔值不存在,我会收到错误消息。控制器也考虑了模型中的布尔值。
我怀疑这两个复选框没有与模型一起正确发送到控制器。可能是由于生成 HTML 的方式。我可能会走得更远,但这是复选框中唯一不同的地方。
感谢您的帮助。