2011-09-19 3 views
3

모델을 부분 모델로 전달할 때 null을 처리하는 방법과 모델의 null 값을 처리하는 방법을 파악하는 데 문제가 있습니다. 이 블록에서부분 모델과 null 모델 값의 null 모델 처리

: E : Shared_TaskBar.cshtml \ \ 뷰 (107) : 오류 CS1002 :

@section TaskBar{ 
    @Html.Partial("_TaskBar", Model); 
} 

I이 오류; 예상치

???

또한, 부분

에 널 (null)에 문제가 나는 시도했다 : this.userID = ko.observable ("@ 경우 (Model.UserID == NULL) {"널 (null) "} 다른 {모델 .UserID} ");

this.userID = ko.observable("@(Model.UserID == null)?"null" :Model.UserID"); 

와; 등 ...

내 질문은 .. 내 부분은 종종 null 모델을 전달할 것입니다 .. 그래서 어떻게 부분적인 방법을 처리하고 null면보기에서 처리하는 방법? 감사!

답변

9

UserId가 null인지, 모델 자체가 아닌지 확인하기 때문에 Model null로 무엇을 의미하는지 명확하게 이해하지 못합니다. 따라서 전체 모델을 확인한다는 의미로 가정 할 때 개인적으로는보기 시작시 간단히 if을 사용합니다. 이

@model MyViewModel 
@if (Model != null) { 
<div> 
    @Model.UserId 
</div> 
} 

또는 같은 뭔가 당신은 RenderSection이 섹션을 선언 할 때, 당신은 선택적으로 할 수 있도록 Required=false을 통과 정의 할 때 그 모델은 값을 가지고 아닌지. 페이지는 Null Object pattern을 활용해야한다 코드를 단순화하기 위해

@if (Model != null) { 
    section TaskBar{ 
    @Html.Partial("_TaskBar", Model); 
    } 
} 
2

에서

@RenderSection("Taskbar", false) 

당신의 layout.cshtml에서

.

존재하지 않는 값을 나타내는 데 null을 사용하는 대신 비어 있거나 의미가없는 값으로 초기화 된 개체를 사용합니다. 이 방법을 사용하면 수십 곳의 널 (null)을 체크인 할 필요가 없기 때문에 NullReferenceExpections를 얻을 필요가 없습니다.

여기에서 파생 된 더 간단한 방법이 있습니다. 특정 NullObject 클래스를 만드는 대신 필요한 클래스의 새 인스턴스를 전달하면됩니다. 간단한 ViewModel이라면 C#이 이미 값을 초기화 했으므로 대개 충분합니다. 대부분 원하는 시간 일 것입니다.

관련 문제