我在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;
}
}
答案 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;
}
}