0

我四处寻找类似的问题,但找不到这个特定的问题。我怀疑这很容易解决,但我以前从未见过它,而且我尝试过的一切都无法解决。

使用 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 的方式。我可能会走得更远,但这是复选框中唯一不同的地方。

感谢您的帮助。

4

1 回答 1

-1

我只是想删除这个问题,但觉得值得给别人一个很好的教训,给自己一些卑微的馅饼。实际上,我在我的模型、控制器和视图中所做的一切都是正确的。除了一件重要的事情。我使用相同模型实体的次数增加了两倍。在控制台>网络中查看后,我可以看到实际使用了多少次 checkboxfor name 。我有一个不同的标签,所以我没有意识到我的手指很胖,并且多次选择了同一个模型实体。我的错。总是先检查最简单的。:)

于 2020-06-09T17:40:08.807 回答