Asp.net core mvc 隐藏的输入字段提取不正确的数据

Asp.net core mvc 隐藏的输入字段提取不正确的数据,asp.net-core-mvc,Asp.net Core Mvc,这项工作: @if (brandFilters.Count != 0) { @for (var i = 0; i < brandFilters.Count(); i++) { <li> <input asp-for="@brandFilters[i].Selected" class="form-check-input" onclick="this

这项工作:

   @if (brandFilters.Count != 0) { 
            @for (var i = 0; i < brandFilters.Count(); i++)
            {
                <li>
                    <input asp-for="@brandFilters[i].Selected" class="form-check-input" onclick="this.form.submit();" />
                    <label asp-for="@brandFilters[i].Selected">@brandFilters[i].Text</label>
                    <input type="hidden" asp-for="@brandFilters[i].Value" />
                    <input type="hidden" asp-for="@brandFilters[i].Text" />
                </li>
            }    
        }

总而言之:这一切都很好,直到我发回除了完整的颜色复选框列表之外的任何东西。部分数据(可视)更新良好。每个复选框的两个隐藏字段都采用旧的顺序数据

更改提供的复选框数量时,ModelState会保留以前的复选框列表。清除ModelState解决了眼前的问题。如果必要的话,我将研究对ModelState的操作,但清除似乎是一条出路。我只需要重新应用以前用于构建新复选框列表的复选框

 @if (colorFilters.Count != 0) { 
            @for (var i = 0; i < colorFilters.Count(); i++)
            {
                <li>
                    <input asp-for="@colorFilters[i].Selected" class="form-check-input" onclick="this.form.submit();" />
                    <label asp-for="@colorFilters[i].Selected">@colorFilters[i].Text</label>
                    <input type="hidden" asp-for="@colorFilters[i].Value" />
                    <input type="hidden" asp-for="@colorFilters[i].Text" />
                </li>
            }
        }
  <li>
                    <input class="form-check-input" onclick="this.form.submit();" type="checkbox" data-val="true" data-val-required="The Selected field is required." id="colorFilters_0__Selected" name="colorFilters[0].Selected" value="true" />
                    <label for="colorFilters_0__Selected">Gold</label>
                    <input type="hidden" id="colorFilters_0__Value" name="colorFilters[0].Value" value="1" />
                    <input type="hidden" id="colorFilters_0__Text" name="colorFilters[0].Text" value="Black" />
                </li>
                <li>
                    <input class="form-check-input" onclick="this.form.submit();" type="checkbox" data-val="true" data-val-required="The Selected field is required." id="colorFilters_1__Selected" name="colorFilters[1].Selected" value="true" />
                    <label for="colorFilters_1__Selected">Red</label>
                    <input type="hidden" id="colorFilters_1__Value" name="colorFilters[1].Value" value="2" />
                    <input type="hidden" id="colorFilters_1__Text" name="colorFilters[1].Text" value="White" />
                </li>
ColorFilterListOutbound.Add(new SelectListItem { Text = item.Value, Value = item.ColorListId.ToString(), Selected = false });