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

时间:2016-09-02 15:10:49

标签: c# webforms

我试图将文本框转换为小数,当我尝试这种方法时,它说inpurt字符串格式不正确,这是最好的方法。

 _record.houseHoldArrearsAmount = Convert.ToDecimal(txtArrearsAmount.Text) 

我认为这是因为文字是"" null和0.00因此它落空

编译器运行时导致异常

如果用户尚未输入

的值,则输入为空白

3 个答案:

答案 0 :(得分:0)

您不能使用空合并运算符(如注释中建议的那样),因为文本框的字符串值不为空,它将是一个空字符串。

您可以执行以下操作:

_record.householdArrearsAmount = 
       (string.IsNullOrWhiteSpace(txtArrearsAmount.Text) ? 0 : 
          Convert.ToDecimal(txtArrearsAmount.Text));

答案 1 :(得分:0)

如果您知道文本总是一个数字,您仍然可以使用转换,但请检查字符串是否先排空:

if (!string.IsNullOrWhitespace(txtArrearsAmount.Text))
{
    _record.houseHoldArrearsAmount = Convert.ToDecimal(txtArrearsAmount.Text);
}

显然,如果houseHoldArrearsAmount不是数字值,则不会更新Decimal.TryParse。在这种情况下,您的工作取决于您的业务模式。您可能希望将其设置为0,或者您可能希望将其保留为旧值以及报告和错误。

或者,如果输入可以是任何字符串,则可以使用decimal result; if (decimal.TryParse(txtArrearsAmount.Text, out result)) { _record.houseHoldArrearsAmount = result; } 将字符串转换为数字。

javascript: document.all.q.value = "Hello Google"

答案 2 :(得分:0)

您可以使用" TryParse" funtion。

decimal householdArrearsAmount  = decimal.Zero;
decimal.TryParse(txtArrearsAmount.Text, out householdArrearsAmount);
_record.householdArrearsAmount = householdArrearsAmount;