c# - MVC Razor For 循环绑定到 ViewModel 问题
问题描述
我看到我的视图模型发回我的控制器时出现了一个令人困惑的问题,我对它为什么不起作用感到困惑。尽管我知道为什么它可能无法正常工作,但我在底部附近进行了解释。
基本上,我使用 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 在循环中被跳过了好几次。
那是对的吗?如果不是,可能是什么问题?
谢谢
解决方案
如评论部分所述,索引器必须是连续的。
因此在我放的 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]”现在在每个循环中都增加
推荐阅读
- ios - 是否可以使用偏移/分页从 CoreStore 获取记录?
- javascript - $http 调用两次: OPTION 然后在 AngularJS 中 GET
- filter - Clojure:将过滤器与具有多个参数的函数一起使用
- android - IBM Watson Assistant:对话框在“试用”中工作,但不在 Android 应用程序中
- ms-access - “&”关键字对访问标题属性有什么作用?
- sql - 将 DATE 转换为 UTC 时间中的 DATE:sys_extract_utc 对于 sysdate 和 systimestamp 的行为不同
- c++ - 如何使用基类函数获取继承类的路径?
- android - 在 Xamarin Android 中查找模式 NavigationPage 的工具栏
- javascript - 如何从 prettier 中忽略 node_modules
- reactjs - 将翻译后的文本作为道具传递