在工作中处理一个有点复杂的页面来配置客户。设置是有一个主页,其中包含用于各种设置组的各种“面板”。
在一种情况下,主表上有一个电子邮件地址字段和一个控制电子邮件发送方式的“导出”配置。我创建了一个选择公司的主面板,并绑定(bind)到 FormView。 FormView 包含一个 Web 用户控件,用于处理导出详细信息的显示/配置。
Web 用户控件包含一个属性来定义它应该处理的配置,它使用 Bind() 从 FormView 获取值。
基本上控件是这样使用的:
<syn:ExportInfo ID="eiConfigDetails" ExportInfoID='<%# Bind("ExportInfoID" ) %>' runat="server" />
被绑定(bind)的属性在 CodeBehind 中声明如下:
public int ExportInfoID
{
get
{
return Convert.ToInt32(hfID.Value);
}
set
{
try
{
hfID.Value = value.ToString();
}
catch(Exception)
{
hfID.Value="-1";
}
}
}
每当 ExportInfoID
为 null 时,我都会得到一个 null 引用异常,但更重要的是它发生在它实际尝试设置属性之前(或者它会在这个版本中被捕获。)
有人知道发生了什么,或者更重要的是,知道如何解决它......?
最佳答案
Bind 无法将 null 值转换为 int 值,以设置 ExportInfoID 属性。这就是为什么它没有被您的代码捕获的原因。您可以使该属性成为可空类型(int?),或者您可以在绑定(bind)逻辑中处理空值。
应该是这样的
bind receives field to get value from
bind uses reflection to get the value
bind attempts to set the ExportInfoID property // boom, error
关于c# - 将空值绑定(bind)到 Web 用户控件的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/97505/