问题是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 窗体应用程序(这是我推断的),那么您需要将该值转换为如下字符串:SelectedValuenull
var val = Convert.ToString(ddlType.SelectedValue);
int? typeid = string.IsNullOrEmpty(val) ?
(int?)null :
(int?)Convert.ToInt32(ddlType.SelectedValue);
因为Convert.ToString如果值为 . 将返回一个空字符串null。