Csharp/C#教程:Foreach Razor里面的Foreach分享


Foreach Razor里面的Foreach

我正在尝试编写一个foreach循环,它将找到每个不同的类别类型,然后列出具有该类别分配的每个Title。

例如:

@model IEnumerable @{ ViewBag.Title = "Home"; } @foreach (var item in Model) { 

@Html.DisplayFor(modelItem => item.ProgramType.ProgramType)

foreach (var listing in Model) { } }

调查回复模型:

  public class SurveyProgramModel { [Key] public int ProgramId { get; set; } public int ProgramYear { get; set; } public int ProgramStatusId { get; set; } public string ProgramTitle { get; set; } public virtual SurveyProgramModel SurveyProgramModel { get; set; } public virtual PersonModel PersonModel { get; set; } 

}

我遇到了两个问题。

1.)我需要它只显示一次每个类别,而不是列出每个项目实例的类别。

2.)它显示所有ProgramTitle,而不仅仅是该循环的ProgramTitle。

不确定我应该使用的语法是什么。

如果我理解正确,那应该是这样的

 @foreach (var item in Model) { 

@Html.DisplayFor(modelItem => item.ProgramType.ProgramType)

foreach (var listing in item.SurveyResponseModels) { } }

看起来您需要在控制器中按ProgramType对枚举进行分组。 这将使视图保持良好和干净。

 IEnumerable models = Foo(); //however you got them... var grouped = models.GroupBy(s => s.ProgramType.ProgramType); return View(grouped); 

然后,您的视图更简单。 (修复模型类型后)。

 @for(int i = 0; i < Model.Count; i++) { 

@Html.DisplayFor(model => model[i].Key)

}

替代方案:

或者,您列出了一个列表:

 var models = Foo(); var grouped = models.GroupBy(s => s.ProgramType.ProgramType) .Select(x => x.Select(y => y)) .ToList(); return View(grouped); 

然后你的观点略有改变:

上述就是C#学习教程:Foreach Razor里面的Foreach分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 @for(int i = 0; i < Model.Count; i++) { 

@Html.DisplayFor(model => model[i].First().ProgramType.ProgramType)

}

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/989825.html

(0)
上一篇 2021年12月23日
下一篇 2021年12月23日

精彩推荐