2012-09-04 234 views
0

我有一個視圖,可以在模型填充數據和模型完全爲空時訪問。ASP.NET MVC模型

當Model爲空時,表示用戶點擊了「Create New」。

目前,我得到一個NullReferenceException,因爲模型內部顯然沒有任何東西。如果我將一個對象傳遞給視圖,那麼瀏覽器會凍結,因爲該對象內部包含空項目。

是否有這樣做,而不是做的更快/更好的辦法: MyObject myObj = new MyObj(); myObj.InnerObj = new Object(){data = ....}; ...

我希望是有道理的:)

回答

1

可以使用NullObject模式:

創建的子類MyObject具有預填充的所有屬性以及有目的地實現無行爲的方法。例如:

public sealed class NullObject : MyObject 
{ 
    public object InnerObj { get; private set; } 
    public NullObject() 
    { 
     InnerObj = new Object { ... }; 
    } 
} 
0

它可能不是最聰明的方法來處理它,但如果你有我有時會包裹在視圖模型相關的代碼在

@if(Model.Property != null) 

所以「創建」和「編輯」的單一視圖,區別在於模型中的屬性數量,使用'if'測試這些屬性,然後相應地進行編碼。

更好的解決方案(我認爲),我們最終實現的是一個enum,我們稱之爲"EditState"有兩個值:'create''edit'。使視圖模型中的EditState屬性成爲一個屬性。設置或檢查它的值並相應地呈現視圖(或者使用輸入創建或顯示,或者您正在設置它)。這是一種很好且易於區分創建流和編輯流的方式。