Usercontrol int属性绑定到数据库中的空值

时间:2010-12-01 19:00:09

标签: asp.net user-controls binding

我在asp.net中构建了一个usercontrol,并且有如下属性。 当绑定值是整数时,一切正常。但是,如果绑定字段从数据库返回null,则它将返回无效的强制转换错误。

更改为可为空的int是不可取的,因为它改变了程序员在代码隐藏中使用控件属性的方式。

想知道这些事情应该如何实施?感谢,

[DefaultValue(0)]
public int FixedLo
{
    get
    {
        if (ViewState["FixedLo"] != null)
            return Convert.ToInt32(ViewState["FixedLo"]);
        else
            return 0;
    }
    set
    {
        if (value == null)
            ViewState["FixedLo"] = 0;
        else 
            ViewState["FixedLo"] = value;
    }
}

2 个答案:

答案 0 :(得分:1)

还会检查DBNull是否有效?

[DefaultValue(0)]
public int FixedLo
{
    get
    {
        if (ViewState["FixedLo"] != null)
            return Convert.ToInt32(ViewState["FixedLo"]);
        else
            return 0;
    }
    set
    {
        if (value == null || value is DBNull)
            ViewState["FixedLo"] = 0;
        else 
            ViewState["FixedLo"] = value;
    }
}

答案 1 :(得分:0)

尝试使用以下代码检查空值

if (value == DBNull.Value)

如果仍有问题,请使用以下代码使您的属性可以为空

public int? FixedLo
{
    get
    {
        if (ViewState["FixedLo"] != null)
            return Convert.ToInt32(ViewState["FixedLo"]);
        else
            return 0;
    }
    set
    {
        if (value == null || value == DBNull.Value)
            ViewState["FixedLo"] = 0;
        else 
            ViewState["FixedLo"] = value;
    }
}