2011-09-21 3 views
4

MVC 3보기 하나의 계약과 클레임 목록을 표시하려면 사용자가 새 클레임을 작성할 수 있습니다. 계약 및 클레임에 대해 다른보기를 만들었습니다. 어떻게 병합하여 하나의보기 만 만들 수 있습니까?MVC 3 하나의 다른 모델의 데이터를 표시합니다.


대린,

는 어떻게보기로 MyViewModel의 인스턴스를 통과 할 두 개의 문자열을 찾고있다?

public ActionResult Details(int id) 
{ 
    MyViewModel myView = new MyViewModel(); 
    return View(_repository.GetContract(id), myView); 
} 

감사


나는 PartialViews HTML을 사용했지만, 난 매개 변수로 모델을 전달하는 방법을 볼 수 없습니다.

계약보기 @model의 Portal.Models.Contracts @using Portal.Models

데이터를 표시합니다. 주어진 상황에서 유효하지 않은 '유형', 'Models.Contracts'된다

<div> 
    @{ 
     Html.RenderPartial("_Claim", Portal.Models.Contracts); 

    } 
</div> 

나는 오류 CS0119을 얻고있다.

데이터는 데이터 유형 IEnumerable<Models.Claims>의 인 PartialView _Claim에 바인딩 어떻게 여기

public ActionResult Details(int id) 
{ 
    return View(_repository.GetContract(id); 
} 

계약보기에 바인딩?

답변

6

당신은 그 두 가지 모델로 포장하는 뷰 모델을 정의 할 수 있습니다 : 다음 컨트롤러 액션이

public class MyViewModel 
{ 
    public Contract Contract { get; set; } 
    public Claim[] Claims { get; set; } 
} 

를보기에이 뷰를 사용 디스플레이 템플릿 내부 MyViewModel의 인스턴스를 전달합니다

@model MyViewModel 

@Html.DisplayFor(x => x.Contract) 
@Html.DisplayFor(x => x.Claims) 

을 입력 한 다음 ContractClaim 모델 (~/Views/Shared/DisplayTemplates/Contract.cshtml~/Views/Shared/DisplayTemplates/Claim.cshtml)에 대한 디스플레이 템플릿을 정의하십시오.

관련 문제