MVC Razor For 循环绑定到 ViewModel 问题

MVC Razor For loop binding to ViewModel problem

我发现我的视图模型回传到我的控制器时出现了一个令人困惑的问题,我很困惑为什么它不起作用。虽然我知道为什么它可能不起作用,但我在底部解释了这一点。

基本上我使用 for 循环将我的模型绑定到 razor 视图中的 HTML

           @for (int i = 0; i < Model.CheckBoxTag.Count; i++)
            {
                @if (Model.CheckBoxTag[i].TagTypeName == "test")
                {
                    ....
                }
            }

当我提交表单时,测试 CheckBoxTag 对象会按预期发送到我的控制器。

但是,当我仅使用升级标签在 html 页面下方执行相同操作时:-

            @for (int i = 0; i < Model.CheckBoxTag.Count; i++)
            {
                @if (Model.CheckBoxTag[i].TagTypeName == "test1")
                {
                        ...
                }

            }

test1 CheckBoxTag 对象没有发送回控制器。 (计数仍然是 3,而应该是 6)

事实上它是相同的代码,我不确定如何处理它。

我的理论:我相信它不会发回我的控制器,因为循环测试是集合中的第一个元素,因此它总是进入 IF。而 test1 对象靠近集合的底部,因此 IF 在循环中被跳过了很多次。

对吗?如果不是,可能是什么问题?

谢谢

如评论部分所述,索引器必须是连续的。

因此在 for 循环中我输入了

     @for (int i = 0; i < Model.CheckBoxTag.Count; i++)
        {


            @if (Model.CheckBoxTag[i].TagTypeName == "test1")
            {
                // New!
                <input type="hidden" name="CheckBoxTag.Index" value="@i" />
                    ...
            }

        }

所以现在索引器“[i]”在每个循环中递增