在单张剃刀表中输出多个集合
在我的viewmodel中,我有4个IEnumberable属性,我需要输出到表中。
每个属性都对应于表中的一列。 如果仔细观察,某些单元格包含多个值。 在我的剃须刀视图中输出这个内容的理想选择是什么?
至于asp.net mvc,我还没有使用过helpers等。 这个表格比直接的@for循环需要更多的逻辑。
这是我的视图模型的样子
public class FactViewModel
{
public int AssessmentID { get; set; }
public IEnumerable<MobilityScore> MobilityScores { get; set; }
public IEnumerable<SocialScore> SocialScores { get; set; }
public IEnumerable<FunctionScore> FunctionScores { get; set; }
public IEnumerable<CognitionScore> CognitionScores { get; set; }
}
*这些IEnumberable属性中的每一个都具有相同的字段:id,value,label。
您可以添加另一个属性到您的FactViewModel
,它将所有分数组合在一起并对它们进行适当的FactViewModel
。 您需要每个分数类型都有一个共同的基本类型,例如Score
。
public class FactViewModel
{
public int AssessmentID { get; set; }
public IEnumerable<MobilityScore> MobilityScores { get; set; }
public IEnumerable<SocialScore> SocialScores { get; set; }
public IEnumerable<FunctionScore> FunctionScores { get; set; }
public IEnumerable<CognitionScore> CognitionScores { get; set; }
public IENumerable<Score> Scores
{
get
{
var scores = new List<Score>();
scores.Add(MobilityScores);
scores.Add(SocialScores);
scores.Add(FunctionScores);
scores.Add(CognitionScores);
return scores.OrderBy(e => e.Label);
}
}
}
这意味着你可以在剃刀中使用常规的@foreach
输出到你的表格。 这隐藏了模型中的所有数据组织,而不是混淆视图。
@foreach (var score in Model.Scores) {
<tr>
<td>@score.Id</td>
<td>@score.Label</td>
<td>@score.Value</td>
</td>
}
如果你使用这种方法,请确保您的子类Score
class MobilityScore : Score { }
class SocialScore : Score { }
class FunctionScore : Score { }
class CognitionScore : Score { }
class Score
{
public int Id { get; set; }
public string Label { get; set; }
public string Value { get; set; }
}
集合中的每个元素如何相互关联? 如果一个评估的每个组件都有多个项目,那么将每个组中的所有项目的连接对象都显示在该单元中的一件事情是否有意义? 每组中的项目如何相互关联?
我注意到每个评估ID都有一列中的每个项目都有单选按钮,因此如果必须选择MobilityScore中的某个特定元素,那么它将难以将该集合表示为一个级联项目。
给定4个集合中最大项目的计数,并且为每个可枚举项目中的每个元素计算每个集合的最大计数,然后添加空td单元格,然后可以(也许)跨越行高度。 。
链接地址: http://www.djcxy.com/p/59761.html上一篇: Output multiple collections in single razor table
下一篇: Unable to render HTML conditionally with Razor in ASP.NET MVC