【发布时间】:2018-09-30 11:29:07
【问题描述】:
我看到一个令人困惑的问题,将我的视图模型发回我的控制器,我对它为什么不工作感到困惑。虽然我知道为什么它可能无法正常工作,但我在底部附近进行了解释。
基本上我使用 for 循环将我的模型绑定到剃刀视图中的 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 在循环中被跳过了好几次。
正确吗?如果不是,可能是什么问题?
谢谢
【问题讨论】:
-
集合索引器必须从零开始并且是连续的(除非您包含索引器的输入)。您的
if块意味着您可能没有生成连续的索引器。您需要在视图中显示数据(特别是TagTypeName属性的值 -
你的索引会重叠
-
@StephenMuecke 我是这么认为的,尽管您的解释比我的要简洁得多。感谢您的确认。
标签: c# asp.net-mvc razor asp.net-core-mvc viewmodel