2008-09-18 59 views
2

有點複雜的網頁上正常的工作配置用戶的屬性。設置是有一個主頁,其中包含各種設置的各種「面板」。綁定一個空值到一個web用戶控件

在一個案例中,有一個在主表和控制電子郵件是如何發出了「出口」配置電子郵件地址字段。我創建了一個選擇公司的主面板,並綁定到FormView。 FormView包含一個Web用戶控件,用於處理導出詳細信息的顯示/配置。

Web用戶控件包含一個屬性來定義該配置應當處理,並將其從所述的FormView使用綁定得到值()。

基本上控制使用這樣的:

<syn:ExportInfo ID="eiConfigDetails" ExportInfoID='<%# Bind("ExportInfoID") %>' runat="server" /> 

被綁定的屬性聲明像這樣的代碼隱藏:

public int ExportInfoID  
{ 
    get 
    { 
     return Convert.ToInt32(hfID.Value); 
    } 
    set 
    { 
     try 
     { 
      hfID.Value = value.ToString(); 
     } 
     catch(Exception) 
     { 
      hfID.Value="-1"; 
     } 
    } 
} 

每當ExportInfoID爲空,我得到一個空引用異常,但踢球的是,在它發生之前它實際上是嘗試設置屬性(或者它會在這個版本被抓住。)

任何人都知道發生了什麼事情,或更重要的是,如何解決它...?

回答

0

綁定無法將空值轉換爲int值,設置ExportInfoID屬性。這就是爲什麼它沒有陷入你的代碼中。你可以使屬性成爲一個可爲空的類型(int?),或者你可以在綁定邏輯中處理null。

所以它會是這樣的

bind receives field to get value from 
bind uses reflection to get the value 
bind attempts to set the ExportInfoID property // boom, error 
0

看起來這是因爲hfID.Value沒有初始化爲一個值尚未所以它不能被轉換。您可能希望在您的吸氣器中添加空檢查或進行一些驗證,以確保hfID.Value不爲空並且是數字。

相關問題