c# - Razor Foreach 循环不返回所有数据

标签 c# asp.net-mvc-3 entity-framework razor

我有一个 foreach 循环,它根据模型中的项目数量构建超链接。它工作正常,除了以下部分: ProgramId = @item.ProgramIds.First() 仅返回每个 ProgramType 的第一个程序 ID。让它循环遍历所有程序 ID 而不仅仅是第一个程序 ID 的语法是什么?

@model IEnumerable<CMESurvey.ViewModels.ProgramTypeViewModel>
@{
    ViewBag.Title = "Home";
}
@foreach (var item in Model)
{ 
    <h2>@Html.DisplayFor(modelItem => item.ProgramTypes)</h2> 

    <ul>
        @foreach (var ProgramTitles in item.ProgramTitles)
        {
            <li>

                @Html.ActionLink(@ProgramTitles, "Results", "SurveyResponse", new { ProgramId = @item.ProgramIds.First() }, null)
    </li>
    }
</ul>

}

   public class ProgramTypeViewModel
    {
        public int ProgramTypeIds { get; set; }

        public IEnumerable<string> ProgramTitles { get; set; }

        public IEnumerable<int> ProgramIds { get; set; }

        public IEnumerable<string> ProgramTypes { get; set; }

    } 

Controller 操作:

 public ViewResult Home()
        {
            var data = from SurveyProgramModel in surveyProgramRepository.Get()
                       group SurveyProgramModel by SurveyProgramModel.ProgramTypeId into programTypeGroup
           select new ProgramTypeViewModel()
           {

               ProgramTypeIds = programTypeGroup.Key,
               ProgramIds = programTypeGroup.Select(r => r.ProgramId),
               ProgramTitles = programTypeGroup.Select(r => r.ProgramTitle),
               ProgramTypes = programTypeGroup.Select(r => r.ProgramType.ProgramType).Distinct(),
           };

            return View(data);
        }

最佳答案

item 指的是来自外循环的值。看起来您想使用内部循环中的值:

@foreach (var ProgramTitles in item.ProgramTitles)         
{             
    foreach(var programId in item.ProgramIds)
    {

       <li>                  
           @Html.ActionLink(ProgramTitles, "Results", "SurveyResponse", new { ProgramId = programId  }, null)             
       </li>         
    }
} 

提供 viewModel 后,您似乎将 ProgramTitles 和 ProgramIds 作为两个断开连接的数组。也许,您所拥有的是 ProgramTitle 的数组索引 n 处的项目在 ProgramIds 数组的第 n 项中具有相应的条目。 viewModel 可以改进,但这是我的解决方案:

@for (var index = 0; index < item.ProgramTitles.Count; index++)         
{             

       <li>                  
           @Html.ActionLink(ProgramTitles[index], "Results", "SurveyResponse", new {  ProgramId = item.ProgramIds[index]}, null)             
       </li>         
}

关于c# - Razor Foreach 循环不返回所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11348352/

相关文章:

c# - 在 Unity 中实现 Span<T>

c# - 使用 Microsoft Web Optimization 缩小 CSS 和 JavaScript

c# - 使用 C# 创建缩略图

c# - 在 Entity Framework 7 中显式映射接口(interface)成员

ASP.Net Entity Framework 存储库和 Linq

c# - Entity Framework 日期组合查询

c# - 实例化时属性 InvalidDataException

C#异常过滤器?

c# - 即使条件评估为 false,If 语句似乎也在评估

asp.net-mvc-3 - 系统参数异常 : Duplicate type name within an assembly