c# - 将空值绑定(bind)到 Web 用户控件的属性

标签 c# .net asp.net

在工作中处理一个有点复杂的页面来配置客户。设置是有一个主页,其中包含用于各种设置组的各种“面板”。

在一种情况下,主表上有一个电子邮件地址字段和一个控制电子邮件发送方式的“导出”配置。我创建了一个选择公司的主面板,并绑定(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/

相关文章:

c# - 使用 LINQ 更新字符串数组

c# - 如何从 XML 元素中获取子元素和孙元素?

c# - WCF 异常 : InvalidOperationException was unhandled

asp.net - 命名空间 'Linq' 中不存在类型或命名空间名称 'System'

asp.net - 为什么我的预编译 Web 应用程序无法加载 RDLC 报告?

c# - 在 web.config 中转义引号和 @

javascript - 将 "min.js"文件放入 MVC 包中是否有意义?

c# - 在 ASP.NET MVC View 中转换 IEnumerable(到数组、列表)

javascript - 将 cookie 写入 ashx 文件

c# - 使用 C#5 在 .NET 4.8 Web 表单应用程序中实现 Microsoft Azure AD 单点登录