空值导致将问题保存到数据库

本文关键字:保存 数据库 问题 空值 | 更新日期: 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));