问题是DBNull.Value
不能分配给int
. 你有一个选择是做这样的事情:
int typeid = string.IsNullOrEmpty(ddlType.SelectedValue) ?
default(int) :
Convert.ToInt32(ddlType.SelectedValue);
另一种选择是使用int?
:
int? typeid = string.IsNullOrEmpty(ddlType.SelectedValue) ?
(int?)null :
(int?)Convert.ToInt32(ddlType.SelectedValue);
还有很多其他选择。但是,如果您尝试将值设置为 anint
并稍后知道是否选择了某些内容,那么这两个选项非常简单。在第一种情况下,您可以通过稍后比较来推断default(int)
它是否null
更早。在第二种情况下,它更直接,因为你可以说typeid.HasValue
看看它是否null
存在。
现在,我取消了通话,因为如果是ToString()
,它们将失败。但是,如果这是一个 Windows 窗体应用程序而不是 Web 窗体应用程序(这是我推断的),那么您需要将该值转换为如下字符串:SelectedValue
null
var val = Convert.ToString(ddlType.SelectedValue);
int? typeid = string.IsNullOrEmpty(val) ?
(int?)null :
(int?)Convert.ToInt32(ddlType.SelectedValue);
因为Convert.ToString
如果值为 . 将返回一个空字符串null
。