2008-09-18 71 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不为空并且是数字。

相关问题