【问题标题】:.NET MVC - C# foreach loop not working in IE11. Only last value in loop being returned.NET MVC - C# foreach 循环在 IE11 中不起作用。仅返回循环中的最后一个值
【发布时间】:2020-07-22 14:24:06
【问题描述】:

我的 .NET MVC 应用程序中有一个视图,它应该返回并显示模型数据,该数据是使用 ExcelDataReader 包从 Excel 文件中读取的。

我的视图包含一个 foreach 循环,它显示模型中的每个值,并在 div 中显示该值。这是我当前的代码:

 @foreach (var item in Model.StudentData)
   {
    <div>@item.FirstName</div>
   }

我遇到的问题是,当此循环在我的应用程序中运行时,仅返回模型中的最后一个值并显示在每个 div 中,但仅当我在 Internet Explorer 11 中运行应用程序时。当我运行此应用程序使用 Chrome 或 Edge,循环在每个生成的 div 中正确显示模型值。

例如:

model values             how Chrome/Edge returns data            how IE11 returns data
------------             ----------------------------            ---------------------
    4                                4                                     8
    3                                3                                     8
    9                                9                                     8
    8                                8                                     8

我循环通过 StudentData 模型的方式是否需要更改以使其与 IE11 浏览器兼容?我在循环结束时设置了一个断点,以验证 item.FirstName 的每个值是否正确返回。我确信这与浏览器兼容性有关。任何意见或建议将不胜感激。

【问题讨论】:

  • 你在每个浏览器中都View Source 了吗?这些值是您在每个 View Source 或浏览器本身中看到的吗?
  • @mjwills 是的,我检查了每个浏览器中的 View Source,只有在 IE11 中每个生成的 div 都指向最后一个值。我实际上用一个简单的 for 循环对此进行了测试。 @for(int a = 1; a @a
    并得到相同的结果。对于简单的 for 循环示例,每个生成的 div 将显示 9。
  • 酷 - 这清楚地表明 View Source 是正确的(所以请删除您之前的评论,否则请删除)。但是浏览器渲染不正确。所以这是一个客户端问题 - 而不是服务器端问题。 ASP.NET MVC 工作正常。问题可能是 CSS 或 JS 或其他问题 - 您需要使用 IE11 中的开发工具来找出当 HTML 显示 1 或 2 或其他什么时它显示 9 的原因。
  • 顺便说一句,将来要在浏览器中单击View Source,然后单击View Source(或View page source或类似的东西)。
  • 标签: c# html asp.net-mvc foreach view


    【解决方案1】:

    我认为,您的问题是由于 IE 缓存问题。 尝试将ModelState.Clear() 放入操作方法中。

    【讨论】:

      猜你喜欢
      • 2020-05-06
      • 1970-01-01
      • 1970-01-01
      • 2017-08-19
      • 1970-01-01
      • 2013-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多