You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#如何获取foreach循环所有值 解决.Net Core日历仅显示最后日期问题

问题原因

你当前代码中jsonDate是单个字符串类型变量,foreach循环遍历过程中,每匹配到一个有效日期就会直接覆盖jsonDate的原有值,之前遍历得到的所有日期都会被丢弃,最终传入视图的自然只有最后一条有效日期的序列化结果。

修复方法

不需要在循环中逐个给单变量赋值,先过滤掉空的无效日期,再把整个有效日期集合一次性序列化为JSON数组即可,完全可以省略冗余的foreach遍历赋值逻辑。

修正后的控制器代码:

public IActionResult Calendar()
{
    // 筛选出所有非空的任务完成日期,统一格式化为yyyy-MM-dd字符串
    var validDates = _context.Tasks
        .Where(t => t.DateAllTaskCompleted != null)
        .Select(t => t.DateAllTaskCompleted.Value.ToString("yyyy-MM-dd"))
        .ToList();

    // 直接将整个日期集合序列化为标准JSON数组
    var jsonDate = JsonSerializer.Serialize(validDates);
    
    ViewData["Date"] = jsonDate;
    return View();
}
注意事项
  • 前端JavaScript读取ViewData中的值反序列化后,得到的是包含所有有效日期的数组,直接遍历数组给日历组件绑定对应日期标记即可。
  • 不要尝试在循环中用字符串拼接的方式生成JSON,这种写法很容易出现格式错误(比如多余分隔符、引号转义异常),直接序列化集合的写法性能更好、格式也不会出错。

内容的提问来源于stack exchange,提问作者Skullkid_01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 00:27:23