c# - 如何遍历多个数组?

标签 c# asp.net-mvc razor

我有 2 个数组,一个包含问题,另一个包含与我当前项目的常见问题解答页面相关的答案。

如果这看起来像是一个简单的问题,我深表歉意,但我不确定我如何能够遍历这些数组,生成包含它们的 HTML,然后动态插入问题和答案。

问题本身很简单,按照下面的代码

@{
   var Questions = ViewData["Questions"];
   var Answers = ViewData["Answers"];
 }
 @foreach (var question in (string[])ViewData["Questions"])
 {
    var html = string.Format(@"
       <div class='panel-group' id='accordion{1}'>
         <div class='panel panel-default'>
           <div class='panel-heading'>
              <h4 class='panel-title'>
                 <a class='accordion-toggle collapsed' data-toggle='collapse' data-parent='#accordion{1}' href='#collapse{1}'>{0}</a>
              </h4>
          </div>
          <div id='collapse{1}' class='panel-collapse collapse '>
             <div class='panel-body'>answer</div>
          </div>
      </div>", question, IDGenerator);
      @Html.Raw(html);
     IDGenerator.Append("1");

   }

我尝试使用嵌套的 foreach 语句来执行此操作,但这会生成 6 个值,我不确定如何将 Viewdata["Answers"] 中的值与现有的值一起插入到字符串中没有重复的问题。

我能否对此有所了解?非常感谢任何帮助。

最佳答案

完美的场景是创建一个 ViewModel包含您需要的所有信息(问题/答案),并将 viewModels 列表作为模型返回到您的 View 。无论如何,假设两个数组的大小相同,您可以使用 for 语句并通过 index 访问每个元素。例如:

@{
   var questions = (string[]) ViewData["Questions"];
   var answers = (string[]) ViewData["Answers"];
}

@if (questions.Length == answers.Length)
{
   for (int i = 0; i < questions.Lenght; i++)
   {
       // here you can access questions[i] and anwsers[i]
   }
}

关于c# - 如何遍历多个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32716533/

相关文章:

c# - 如何在 ASP.NET MVC 中组织 DAL

c# - 如何设置viewbag值输入datetime类型时间

c# - Telerik Kendo MVC Grid 子模板从父模板获取默认值

c# - 在 Microsoft.Web.Administration.Application 对象上配置 SSL?

c# - HttpRequest 与 HttpRequestMessage 与 HttpRequestBase

c# - 更改启动画面的持续时间?

.net - 覆盖 ASP.NET MVC 中的授权属性

c# - 为什么在部分 View 输入上显式设置名称属性会导致值在 POST 后发生变化?

c# - 实现以泛型接口(interface)为参数的泛型接口(interface)

c# - 如何实现 SharpZipLib.Portable 所需的 VirtualFileSystem?