首页 新闻 会员 周边

for (int i = 0; i < Model.DetailList.Count; i++) 遍历重复问题 急!急!急!

0
悬赏园豆:20 [已解决问题] 解决于 2021-04-28 09:48

关于 前端页面 for (int i = 0; i < Model.DetailList.Count; i++) 遍历重复问题

按月份条件查询,

正常应该是上面两张图这样。(页面初始化的时候默认3月份,对应的是A员工,选择4月份的时候返回B员工),
可是我选择4月份,点击查询,页面显示还是A员工

这是什么原因导致的?
前端页面代码:

依米呀的主页 依米呀 | 菜鸟二级 | 园豆:235
提问于:2021-04-26 15:51
< >
分享
最佳答案
0

for迴圈中是否有對Model.DetailList增減項目?

收获园豆:15
RosonJ | 老鸟四级 |园豆:4910 | 2021-04-26 16:03

什么意思,不太明白

依米呀 | 园豆:235 (菜鸟二级) | 2021-04-26 16:11

@Yimi依米:
迴圈過程中如果列表數量增加或減少,就有可能導致錯誤的結果

RosonJ | 园豆:4910 (老鸟四级) | 2021-04-26 16:12

@RosonJ: 没有增加减少,也出现这样的问题

依米呀 | 园豆:235 (菜鸟二级) | 2021-04-26 16:31

@Yimi依米:
列表回傳到頁面前還做過哪些處理?

RosonJ | 园豆:4910 (老鸟四级) | 2021-04-26 16:32

@RosonJ: 就return 列表 前端是for (int i = 0; i < Model.DetailList.Count; i++) 接收

依米呀 | 园豆:235 (菜鸟二级) | 2021-04-26 16:33

@Yimi依米:
debug看看列表在什麼時間點開始資料錯誤吧

RosonJ | 园豆:4910 (老鸟四级) | 2021-04-26 16:43

@RosonJ: 感觉就是显示的一瞬间

依米呀 | 园豆:235 (菜鸟二级) | 2021-04-26 17:08

@Yimi依米:
幫我做個測試

<input type="textbox" value="@Model.DetailList[i].Usercode" />
<input type="textbox" value="@Model.DetailList[i].Username" />

把這兩行放到view上,看看顯示出來的結果

RosonJ | 园豆:4910 (老鸟四级) | 2021-04-26 17:23

对呀,就是显示那一瞬间有问题

依米呀 | 园豆:235 (菜鸟二级) | 2021-04-27 09:39

@RosonJ: 这两个input显示出来的是正常的。
我这个列表是可编辑的列表。如果用input的话怎么循环取值啊?

依米呀 | 园豆:235 (菜鸟二级) | 2021-04-27 09:45

@RosonJ: 就是比如我有3条数据,改了其中每一条或者都改了。需要保存,后台要怎么获取到这个DetailList

依米呀 | 园豆:235 (菜鸟二级) | 2021-04-27 09:46

@Yimi依米:
這是ModelState的問題
在Controller回傳Model之前加上一行

ModelState.Clear();

要注意的是,加上這行之後,如果你有使用ModelState,可能會出現異常

RosonJ | 园豆:4910 (老鸟四级) | 2021-04-27 09:48

@RosonJ: 就是后台给DetailList赋值之前加上ModelState.Clear();这一行吗?

依米呀 | 园豆:235 (菜鸟二级) | 2021-04-27 09:51

@Yimi依米:
加在return前最保險

RosonJ | 园豆:4910 (老鸟四级) | 2021-04-27 09:53

@RosonJ: 数据是正常了,但是因为我的页面初始化的时候默认是上一个月,所以我选择4月的时候,数据对应上了,但是月份显示为3月了

依米呀 | 园豆:235 (菜鸟二级) | 2021-04-27 09:57

@Yimi依米:
默認是在哪裡設定?

RosonJ | 园豆:4910 (老鸟四级) | 2021-04-27 10:00

@RosonJ: 下拉框。
@Html.DropDownListFor(m => m.Month, ViewBag.Data12 as List<SelectListItem>, new { style = "width:100px" })

依米呀 | 园豆:235 (菜鸟二级) | 2021-04-27 10:06

@Yimi依米:
m.Month在後端設定的?

RosonJ | 园豆:4910 (老鸟四级) | 2021-04-27 11:00

@RosonJ: 是的,在后台设置的下拉框的值返回到前端页面。

依米呀 | 园豆:235 (菜鸟二级) | 2021-04-27 11:03

@Yimi依米:
那就要回到基本問題了
傳入Model跟傳出的Model不建議用同一個
會有ModelState的問題,用上面寫的方式處理,又可能造成其他狀況

RosonJ | 园豆:4910 (老鸟四级) | 2021-04-27 11:36

@RosonJ: 没有解决的办法吗?

依米呀 | 园豆:235 (菜鸟二级) | 2021-04-27 14:56

@Yimi依米:

  1. ModelStat.Clear(),可能有後遺症
  2. 接收/返回不要使用同一個Model
  3. 不要使用HTMLHelper(@Html)
RosonJ | 园豆:4910 (老鸟四级) | 2021-04-27 14:58

@RosonJ: 嗯嗯,我试试吧

依米呀 | 园豆:235 (菜鸟二级) | 2021-04-28 09:47
其他回答(2)
0

条件筛选是由前端传参,后端返回决定的吧,看看后端返回的对不对吧

收获园豆:2
一杯龙井解千愁 | 园豆:407 (菜鸟二级) | 2021-04-26 16:09

后端返回的没有问题

支持(0) 反对(0) 依米呀 | 园豆:235 (菜鸟二级) | 2021-04-26 16:10

@Yimi依米: 选择四月后,得到的dataList列表,没有重新渲染,那就找找逻辑,看怎么没重新赋值 dataList

支持(0) 反对(0) 一杯龙井解千愁 | 园豆:407 (菜鸟二级) | 2021-04-26 16:15

@一杯龙井胜拿铁: 后台返回的列表重新赋值了,连前端循环的时候都重新赋值了

支持(0) 反对(0) 依米呀 | 园豆:235 (菜鸟二级) | 2021-04-26 16:32
1

页面这一块对应的代码贴出来看看

收获园豆:3
进阶科技树 | 园豆:74 (初学一级) | 2021-04-26 16:45

+1

支持(0) 反对(0) ufo233- | 园豆:92 (初学一级) | 2021-04-26 16:54

问题中有

支持(0) 反对(0) 依米呀 | 园豆:235 (菜鸟二级) | 2021-04-26 17:10

@Yimi依米: debug后端返回的值和前端的值是否一致,不一致看看有么有可能是缓存

支持(0) 反对(0) 进阶科技树 | 园豆:74 (初学一级) | 2021-04-26 17:22

@进阶科技树: 值是一致的,就是感觉显示的一瞬间有问题

支持(0) 反对(0) 依米呀 | 园豆:235 (菜鸟二级) | 2021-04-27 09:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册