2016-09-02 19 views
0

この方法を試してみるとテキストボックスを10進数に変換しようとしていますが、インプルート文字列が正しい形式ではないと言われています。私はそれがテキスト「は」ヌルとし、0.00であるので、したがって、それは、ユーザが入力していない場合は空白になり、コンパイラの実行時間が例外データベースに問題が発生する原因となるNULL値

に入力を引き起こしている

の上に落ちているpersume

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

値はまだありません

+0

このように、箱の内容を確認してから、議論として渡してください...実際の問題は何ですか? –

+2

例外の完全なエラー出力を追加してください。また、あなたはこれをC#としてタグ付けするつもりかもしれないと思います。 – JosephGarrone

+0

私は?この場合のフラグで、値がNULLの場合には有効にしてください。 – rogue39nin

答えて

0

あなたはテキストは常にあなたがまだ変換を使用しますが、文字列が最初の空でないことを確認することができます数になるだろうことがわかっている場合:

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; 
} 
0

テキスト・ボックスの文字列値がNULLでないため、NULL合体演算子(コメント内の提案として)を使用することはできません。空の文字列になります。

次の操作を行うことができます:

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

IsNullOrWhitespace doestが標準ではありません.netこれはヘルパーファイル内にある関数です – rogue39nin

+0

スペースに大文字のSが必要です。ご迷惑をおかけして申し訳ございません:https://msdn.microsoft.com/en-us/library/system.string。 isnullorwhitespace(v = vs.110).aspx – Paddy

0

「TryParse」機能を使用できます。

decimal householdArrearsAmount = decimal.Zero; 
decimal.TryParse(txtArrearsAmount.Text, out householdArrearsAmount); 
_record.householdArrearsAmount = householdArrearsAmount; 
関連する問題