2013-01-24 80 views
0

在自定義的控制,我把財產自定義控件屬性沒有設置

[Bindable(true), Category("Appearance"), DefaultValue(""), Localizable(true), Description("")] 
public string InitValue 
{ 
    get { return ViewState["InitValue"].ToString(); } 
    set { ViewState["InitValue"] = value; } 
} 

當我包括這一個頁面上,並運行該頁面我收到Object reference not set...例外。它穿上了一個線號,它是上面的get

它發生在我沒有設置屬性,但我不希望該屬性是必需的。

在需要時考慮使用

get { return ViewState["InitValue"]==null ? "" : ViewState["InitValue"].ToString(); } 

或更好地使財產爲目標的好選擇,ToString()呢?

回答

0

應檢查返回值是

public string InitValue 
{ 
    get 
    { 
     if(ViewState["InitValue"] != null) 
      return ViewState["InitValue"].ToString(); 

     return "default value here"; 
    } 
    set { ViewState["InitValue"] = value; } 
} 
+0

這就是我在問題中的解決方案。希望得到別的東西。 – JNF

0

我一直這樣處理的方式是之前存在:

public string InitValue 
{ 
    get 
    { 
     if(ViewState["InitValue"] == null) 
     ViewState["InitValue"] = [DEFAULT VALUE];   

     return ViewState["InitValue"].ToString(); 
    } 
    set { ViewState["InitValue"] = value; } 
} 
+0

這與我在問題中的解決方案相同。希望得到別的東西。 – JNF

+0

但它很漂亮:) –

+0

我認爲我的更漂亮... – JNF

0

get是可爲空的特性做了ToString()。處理它,你會很好。在下面的代碼中,我假設「」作爲默認值。

get { (return ViewState["InitValue"] ?? string.Empty).ToString(); }