2013-10-22 6 views
0

내 viewmodel에는 테이블에 출력해야하는 4 개의 IEnumberable 속성이 있습니다.단일 면도기 테이블에 여러 개의 출력을 출력

각 속성은 표의 열에 해당합니다. 면밀히 살펴보면, 일부 셀은 하나 이상의 값을 포함합니다. 내 면도보기에서 이것을 출력하는 것이 이상적일까요?

나는 asp.net mvc에서 지금까지 도우미 등을 사용하지 않았다. 이 테이블은 직선적 인 @for 루프보다 조금 더 많은 로직을 필요로합니다. ID, 값, 라벨 : 여기

이 IEnumberable 각 속성이 동일한 필드가

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; } 
} 

*

처럼 내보기 모델이 모습입니다.

enter image description here

+0

모든 컬렉션을 반복하는'for' 루프는 어떨까요? –

+0

4 for 루프는 각 컬렉션을 쉽게 출력하지만 원하는 출력을 얻으려고하는지 확신 할 수 없습니다. 그 접근 방식이 4 개의 별개 테이블을 필요로 할 것입니다. – Rockitdev

+0

@MikeHometchko 이전 버전의 내 앱에서는 행의 모든 ​​열이 하나의 단일 값을 갖기 때문에 더 직선적이었습니다. 그래서 나는 그것을 for 루프로 돌렸다. 기본적으로, 나는이 산출물을 만들려고 애 쓰고 있습니다. **1. 어떻게 셀을 생략합니까 ** ** 2. 하나의 셀에 2 개의 필드를 출력하는 방법 *** – Rockitdev

답변

0

당신은 당신의 점수와 적절하게 주문을 결합 당신의 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> 
} 

이 방법을 사용하면

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; } 
} 
+0

@foreach 그냥 아주 긴 3 열 테이블 밖입니까? – Rockitdev

+0

@ user1541443 예, 처음에는 4 점을 말했지만 질문이 끝나면 3 점을주었습니다. 그다지 중요하지는 않지만 또 다른 ''을 추가하면됩니다. 이 방법이 효과가 있다고 생각하십니까? –

0

어떻게 서로 관련 세트의 각 요소가 Score의 하위 클래스를 확인? 한 평가의 각 구성 요소에 대해 여러 항목이있는 경우 각 집합의 모든 항목을 연결 개체로 만들어 해당 셀에 한 항목을 표시하는 것이 합리적입니까? 각 세트의 항목은 서로 어떻게 관련이 있습니까?

각 평가 ID에 대해 열의 각 항목 집합에 라디오 단추가 표시되어 MobilityScore의 특정 요소 하나를 선택해야하는 경우 집합을 하나의 연결된 항목으로 표시하는 것이 어려워집니다.

네 개의 컬렉션 중 최대 항목 수와 각 열거 가능 항목의 각 요소에 대해 행 높이에 도달하면 각 컬렉션의 최대 개수를 반복하고 빈 td 셀을 추가 할 수 있습니다 없는 곳.

관련 문제