Я знаю, что ответ уже принят, но я хотел выкинуть другое решение для тех, у кого есть такая же проблема и которые ищут несколько обходных путей.
Для этого я использую плагин валюты формата 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. Если ваше десятичное значение не обнуляется в базе данных, просто измените decimal input = -1
на decimal input = 0
, и у вас будет значение по умолчанию 0.