ASP.NET在发送带有间隙的数组时应使用哪种格式

本文关键字:格式 数组 NET 间隙 ASP | 更新日期: 2023-09-27 17:57:42

这是我的HTML:

<ul id="limitations" name="limitations" class="dropdown-menu">
   <li>
      <div class="checkbox checkbox-default">
         <input type="checkbox" id="limitation-checkbox-0" value="8" name="limitations[0]" data-name="ALS ">
         <label for="limitation-checkbox-0" style="color:black">ALS </label>
      </div>
   </li>
   <li>
      <div class="checkbox checkbox-primary">
         <input type="checkbox" id="limitation-checkbox-1" value="10" name="limitations[1]" data-name="Arthrogryposis Multiplex Congenita (AMC) &amp; Amyoplasia">
         <label for="limitation-checkbox-1" style="color:black">Arthrogryposis Multiplex Congenita (AMC) &amp; Amyoplasia</label>
      </div>
   </li>
   <li>
      <div class="checkbox checkbox-success">
         <input type="checkbox" id="limitation-checkbox-2" value="2" name="limitations[2]" data-name="Cerebral Palsy (CP), (GMFS)">
         <label for="limitation-checkbox-2" style="color:black">Cerebral Palsy (CP), (GMFS)</label>
      </div>
   </li>
   <li>
      <div class="checkbox checkbox-info">
         <input type="checkbox" id="limitation-checkbox-3" value="4" name="limitations[3]" data-name="Hearing impairment deafness or hard of hearing">
         <label for="limitation-checkbox-3" style="color:black">Hearing impairment deafness or hard of hearing</label>
      </div>
   </li>
    ... MORE <li> ...
</ul>

当我发布表单时,List<int> limitations的模型绑定器仅在选中复选框的情况下有效,如果数组中存在间隙,则不绑定间隙后的所有项目。

例如:

考虑选中了第一个(8)和第三个(10)复选框。绑定到List<int> limitations的值为[8]。或者,如果选中了所有复选框,则List<int> limitations将绑定到一个空列表中。

我尝试将复选框的namename="limitations[0..n]"更改为name="limitations[]",但这导致ASP.NET完全忽略了这些值。

这样的事情难道没有标准吗?!

我知道如何通过javascript操作来克服这一问题,但我真的不想在这种琐碎的情况下走那种尴尬的路

使用asp.net核心1.0.0和.net 4.6.1

ASP.NET在发送带有间隙的数组时应使用哪种格式

ASP.Net模型绑定没有改变ASP.Net 4和ASP.Net Core之间的这种行为。这里的答案仍然有效。

您的命名约定有点偏离。如果您有多个具有相同名称的<input type="checkbox"...>,它应该自动序列化为ASP.Net的模型绑定可以容纳的数组。

试着在整个输入中使用name="limitations"而不是name="limitations[0]",看看这是否如预期那样有效。