Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在单个razor表中输出多个集合_C#_Asp.net Mvc_Asp.net Mvc 4_Razor - Fatal编程技术网

C# 在单个razor表中输出多个集合

C# 在单个razor表中输出多个集合,c#,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net Mvc,Asp.net Mvc 4,Razor,在我的viewmodel中,我有4个IEnumberable属性需要输出到表中 每个属性对应于表中的一列。如果仔细观察,某些单元格包含多个值。在我的razor视图中,理想的输出方式是什么 到目前为止,我还没有在asp.net mvc中使用帮助程序等。这个表需要比直接的@for循环多一点逻辑 下面是我的视图模型的外观 public class FactViewModel { public int AssessmentID { get; set; } public IEnumerab

在我的viewmodel中,我有4个IEnumberable属性需要输出到表中

每个属性对应于表中的一列。如果仔细观察,某些单元格包含多个值。在我的razor视图中,理想的输出方式是什么

到目前为止,我还没有在asp.net mvc中使用帮助程序等。这个表需要比直接的@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; }
}
公共类FactViewModel
{
public int AssessmentID{get;set;}
公共IEnumerable MobilityScores{get;set;}
公共IEnumerable SocialCores{get;set;}
公共IEnumerable函数得分{get;set;}
公共IEnumerable认知分数{get;set;}
}
*每个IEnumberable属性都有相同的字段:id、值、标签


您可以将另一个属性添加到您的
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);
        }
    }
}
如果使用这种方法,请确保将
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单元格

4个循环循环遍历每个集合怎么样?4个循环可以很容易地输出每个集合,但我不确定是否能得到我想要的输出,因为这种方法需要4个不同的表,不是吗?@Mikehomechko在我的应用程序的前一个版本中,这更直接,因为一行中的每一列只有一个值。所以我只是把它作为for循环运行。基本上,我正在努力构建这个输出。1.如何跳过单元格2。如何在单个单元格中输出两个字段*@user1541443我们无法回答如何在单个单元格中输出两个字段,除非您解释为什么两个字段会输出到单个单元格中。还要澄清2字段属于哪个对象。@DanielImms Ok。最左边的列是一个标题,指示当前行中无线电输入的值。现在,在每一行中,可能有多个收音机,或者根本没有。有一个业务需求,即在单个小区中能够有1个以上的无线电输入,或者根本没有。这有帮助吗?@foreach会不会只是一个很长的3列表?@user1541443是的,你在开始时说4,但在问题结束时只给了3。这其实并不重要,您可以添加另一个
。你认为这种方法有效吗?
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; }
}