2012-02-15 1 views
7

UserDetails이라는 부분 뷰가 User이라는 모델 클래스로 설정된 @model 절이 있다고 가정합니다.모델에 "null"이 포함 된 부분 뷰를 호출하려면 어떻게합니까?

@model MyProject.Models.SpecialModel 
@{ ViewBag.Title = "..."; } 
<div class='user'>@Html.Partial("UserDetails", Model.SpecialUser)</div> 

이 작품 : 내 부분보기는 위에서 언급 한 호출 할 SpecialModel의 내부보기

public sealed class SpecialModel 
{ 
    public User SpecialUser; 
    public ... // other stuff 
} 

:

는 지금 이런 식으로 뭔가를 보이는 또 다른 모델 클래스가 있다고 가정 사용자가 null이 아닌 경우에만 매우 양호한 입니다. 사용자가 null 경우 그러나,이 예외가 :

System.InvalidOperationException : 사전에 전달 모델 항목이 'MyProject.Models.SpecialModel'유형이지만,이 사전은 '유형의 모델 항목을 필요에 MyProject .Models.User '.

분명히 예외 메시지가 거짓말입니다. null을 정상적으로 전달할 수 있도록 올바르게 수정하는 방법은 무엇입니까? 대신

@Html.Partial("UserDetails", Model.SpecialUser) 

답변

18

이 특정 시나리오 작업을하게

@Html.Partial("UserDetails", new ViewDataDictionary(Model.SpecialUser)) 

더 자세한 물품.

그러나 단점이 있습니다. 컨트롤러에서 전달 된 모든 정보가 지워집니다. 특히 모든 유효성 검사 정보를 지 웁니다. 일부 데이터를 게시 할 때 부분 뷰 내에 유효성 검증 오류 메시지를 표시하려면이 기술을 사용할 수 없습니다.

+0

다음 솔루션 [여기] (http://stackoverflow.com/a/12037580/649497) 단점을 극복! – Mojtaba

관련 문제