モデル内の項目数に基づいてハイパーリンクを作成する 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; }
}
コントローラーのアクション:
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);
}