В ASP.NET MVC 2 / EF запятая в номере вызывает ошибку привязки модели - PullRequest
1 голос
/ 21 сентября 2010

В моем методе контроллера HTTP POST для добавления / редактирования данных я получаю сущность из моей модели данных EF.Некоторые поля в этой сущности имеют тип double.Все работает нормально, если пользователь не вводит запятую для разделителя тысяч, что затем вызывает ошибку проверки привязки модели.

Кто-нибудь сталкивался с этим раньше?Является ли замена связующего по умолчанию моделью на обычное единственным решением или есть лучший подход?

Любой совет будет принят с благодарностью.

1 Ответ

0 голосов
/ 21 сентября 2010

Привязка модели для MVC использует инвариантный режим привязки культуры. Поэтому числа должны быть в формате 100000.00.

Хотя следующее относится к дате и времени, оно также относится и к десятичному типу.

Цитата члена команды asp.net:

" Это преднамеренно. Все, что является частью URI (обратите внимание на 'Uniform' в URI), интерпретируется так, как если бы оно исходило из инвариантной культуры. Это так, что пользователь в США, который копирует ссылка и отправка ее через IM другу в Великобритании может быть уверен, что его друг увидит точно такую ​​же страницу (в отличие от HTTP 500, например, из-за ошибки преобразования DateTime). В общем, даты передаваемый в RouteData или QueryString должен иметь формат yyyy-mm-dd, чтобы быть однозначным для разных культур .

Если вам нужно интерпретировать параметр QueryString или RouteData с учетом культурных особенностей, извлеките его как строку, а затем преобразуйте его в нужный тип вручную, передав необходимую культуру. (У DateTime.Parse есть перегрузки, которые позволяют вам указывать культуру.) Если вы сделаете это, я также рекомендую взять желаемую культуру в качестве параметра QueryString или RouteData, чтобы не потерять «универсальную» часть URI, например, URL будет выглядеть примерно так ...? culture = fr-fr & date = 01-10-1990."

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