空值导致将问题保存到数据库
本文关键字:保存 数据库 问题 空值 | 更新日期: 2023-09-27 18:05:27
我正在尝试将文本框转换为小数,当我尝试此方法时,它说输入字符串格式不正确,这是最好的方法。
_record.houseHoldArrearsAmount = Convert.ToDecimal(txtArrearsAmount.Text)
我认为这是因为文本是" null "和0.00,因此它落在
上编译器运行时导致异常
如果用户尚未输入值,则输入为空
如果你知道文本总是一个数字,你仍然可以使用Convert,但首先要检查字符串不是空的:
if (!string.IsNullOrWhitespace(txtArrearsAmount.Text))
{
_record.houseHoldArrearsAmount = Convert.ToDecimal(txtArrearsAmount.Text);
}
显然,这不会更新houseHoldArrearsAmount
,如果它不是一个数值。在这种情况下,你做什么取决于你的商业模式。您可能希望将其设置为0,或者您可能希望保留旧值并报告和错误。
或者,如果输入可以是任何字符串,您可以使用Decimal.TryParse
将字符串转换为数字。
decimal result;
if (decimal.TryParse(txtArrearsAmount.Text, out result))
{
_record.houseHoldArrearsAmount = result;
}
可以使用"TryParse"函数
decimal householdArrearsAmount = decimal.Zero;
decimal.TryParse(txtArrearsAmount.Text, out householdArrearsAmount);
_record.householdArrearsAmount = householdArrearsAmount;
您不能使用空合并运算符(如您在注释中建议的),因为文本框的字符串值不会为空,它将是一个空字符串。
你可以这样做:
_record.householdArrearsAmount =
(string.IsNullOrWhiteSpace(txtArrearsAmount.Text) ? 0 :
Convert.ToDecimal(txtArrearsAmount.Text));