2011-09-19 62 views
3

我在將模型傳遞給部分以及處理模型中的空值時如何處理空值時出現問題。在部分和空模型值中處理空模型

在此塊中:

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

我得到這個錯誤: E:\視圖\ Shared_TaskBar.cshtml(107):錯誤CS1002:;預計

???

此外,在部分

具有空值的問題我已經試過: this.userID = ko.observable( 「@如果(Model.UserID == NULL){」 空「} {其他型號。用戶名}」);

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

用;等...

所以我的問題是..我的部分將經常傳遞一個空模型..所以如何處理部分方法,如果null如何在視圖中處理?謝謝!

回答

9

我不清楚你對模型null意味着什麼,因爲你的例子檢查UserId是否爲null而不是模型本身。所以,假設你的意思是檢查整個模型,我個人會在我的觀點開始時使用一個簡單的if。 像這樣

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

或者當你定義RenderSection通過Required=false所以聲明節時,你可以選擇做,如果該模型具有價值或沒有。

在你layout.cshtml

@RenderSection("Taskbar", false) 

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

爲了簡化你的代碼,你應該利用Null Object pattern頁面。

不是使用null來表示一個不存在的值,而是使用初始化爲空/無意義值的對象。通過這種方式,您無需檢查數十個空位,並在您錯過時獲取NullReferenceExpections。

甚至有一個更簡單的方法,從中得出。不要創建特定的NullObject類,只需傳遞您需要的類的新實例。如果它是一個簡單的ViewModel,通常這已經足夠了,因爲C#已經爲你初始化了這些值,並且很可能是你大部分時間想要的。