回答が既に受け入れられていることは知っていますが、同じ問題を抱えていて複数の回避策を探している人のために、別の解決策を捨てたかったのです。
これを行う方法は、jQuery形式の通貨プラグインを使用して、クライアント側でユーザー入力をバインドすることです。サーバー側でこの入力を解析するには、次のものが必要です。
// directive
using System.Globalization;
// code
decimal input = -1;
if (decimal.TryParse(txtUserInput.Text, NumberStyles.Currency,
CultureInfo.InvariantCulture, out input))
{
parameter = input.ToString();
}
これに対する唯一の欠点は、ユーザーが JavaScript をオフにすることができることです。その場合、サーバー側で実行されている RegEx バリデーターがフォールバックとして機能します。コントロールがデータバインドされている場合、decimalValue.ToString("{0:c}")他の人が述べたように、適切な通貨形式を表示するために必要なのは.
これの優れた点は、ユーザーがテキスト ボックスを入力$0.00してクライアント側に表示された場合、サーバー側の if ステートメントが false を返すことです。データベースで 10 進数の値を null にできない場合は、変更decimal input = -1するだけdecimal input = 0でデフォルト値が 0 になります。