2012-08-13 3 views
0

나는 그리드/테이블 질문을 보여주고 각 질문에 상태 드롭 다운이있는 응용 프로그램을 가지고 있습니다. 약 1-200 개의 질문이 있으며 각 상태 드롭 다운에는 그리드의 모든 행에 대해 약 50 개의 선택 사항이 있습니다.HTML.DisplayFor를 사용할 때 다른 모델을 표에 전달할 수 있습니까?

내 컨트롤러는 뷰에 다음과 같은 모델을 전달합니다 다음

IEnumerable<Question.Grid> 

를 내보기에 나는이 그리드 테이블의 상세 선 출력합니다 다음 코드를

<tbody class="grid"> 
@if (Model != null) { 
    foreach (var item in Model) { 
    @Html.DisplayFor(model => item, "QuestionDetail") 
    } 
} 
</tbody> 

의 각을 그리드 라인은 상태 드롭 다운을 가지고 있으며 드롭 다운에 대한 데이터 (모든 행에 대해 동일)를 QuestionDetail 뷰에 전달하려고합니다. 내가이 추가 정보를 보내 내보기에 나는 다음과 같은 것을 가질 수 있도록하는 가장 좋은 방법은 무엇 : 모든

@Html.DropDownList("Question.Status", Status, new { id = "StatusID"}) 

답변

0

먼저, 뷰 모델로는 IEnumerable을 전달하지 않습니다. 오히려이 같은 속성으로 IEnumerable을 가지고 하나의 정의 :

public class EnumViewModel 
{ 
    public IEnumerable<Question.Grid> Questions { get; set; } 
    public int MyAdditionalFieldIWantedToPassAlong { get; set; } 
} 
public class Question.Grid 
{ 
    public string MyExistingFields { get; set; } 
    // as many as you had 
    public string MyAdditionalFields { get; set; } 
    // as much as you want 
} 

을하고보기 @model EnumViewModel로 모델의 하나 개의 모델 대신 목록을받을 수 있습니다. 이 시점에서 EnumViewModel 내부에이 정보가있는 경우 추가 정보를 추가하는 것이 매우 쉬워야합니다. 질문에 더 구체적 인 경우 해당 상태 ID를 포함하는 목록의 모든 모델 내부에서 항목을 즐기십시오. 당신이

  1. 디스플레이와 다시 컨트롤러에
  2. 게시물이 도움이

희망에보기 필요한 데이터를 저장하기위한 단지 컨테이너로의

생각합니다.

관련 문제