.NET MVC3 Удалить символ валюты и запятые - PullRequest
1 голос
/ 23 мая 2011

В моей модели у меня есть следующее свойство:

 [DataType(DataType.Currency)]
 public decimal? Budget { get; set; }

Когда пользователь вводит $ 1200,34, мне нужно, чтобы это значение было действительным и убирало символ валюты и запятую.

В моем контроллере я делаю:

if (race.Budget != null)
{
   race.Budget.ToString().Replace("$", "").Replace(",", "");
}

Проблема в том, что проверка клиента не передает значение бюджета в контроллер.Я получаю значение ноль.Как я могу переопределить проверку клиента, чтобы можно было убрать символ валюты и запятую?

Заранее спасибо за помощь.

ОБНОВЛЕНИЕ

Так вот странная вещь.Допустим, я хочу обойти проверку клиента все вместе.Я добавил @{ Html.EnableClientValidation(false); } к своему представлению, и оно все еще отправляет нулевое значение для бюджета, когда я отправляю в контроллер.

Ответы [ 3 ]

5 голосов
/ 23 мая 2011

Это не проблема проверки на стороне клиента.У вашей модели есть поле типа decimal?Механизм связывания попытается привязать к нему значение $ 123 456,78 и потерпит неудачу, поэтому значение будет нулевым.Вот один из способов обойти это:

Измените вашу модель, чтобы иметь строковое свойство, маскирующее ваше десятичное число:

public decimal? Budget { get; set; }
public string BudgetText {
    get {
        return Budget.HasValue ? Budget.ToString("$") : string.Empty;
    }
    set {
        // parse "value" and try to put it into Budget
    }
}

Затем просто привязайте BudgetText из вашего View.Проверьте его как строку с регулярным выражением, которое принимает только денежные данные.Вероятно, это будет то же регулярное выражение, которое вы можете использовать для вашего BudgetText set метода

1 голос
/ 23 мая 2011

Таким образом, вы можете подключить JQuery для предварительной обработки поля формы, чтобы удалить ненужные символы (перед отправкой формы на сервер).Это, пожалуй, самый быстрый и грязный подход.

Для чего-то, что можно многократно использовать, взгляните на пользовательскую проверку клиента адаптеры .Ссылки не на месте, но должны привести вас в правильном направлении.Я полагаю, что для скриншота Брэда соответствующие части написаны довольно рано.

0 голосов
/ 23 мая 2011

Проверьте поддержку локализации jQuery

проверка клиентов с использованием jQuery validate для полей валюты

также есть плагин для проверки валюты

http://code.google.com/p/jquery-formatcurrency/

проверьте это недавнее сообщение также для $ в обязательном порядке .NET MVC 3 Пользовательский десятичный знак? Модель Binder

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...