MVC 2 - десятичное значение не сохраняется - PullRequest
2 голосов
/ 08 декабря 2011

В настоящее время я создаю формы для контрактов, одно из полей предназначено для% скидки, и было объявлено в десятичном виде в Entity Framework. У меня возникает проблема, когда я ввожу значение и сохраняю его.

Быстрый обзор кода:

EF: tblContract -> Rebate - это десятичное поле.

Создание / редактирование вида:

<%: Html.TextBoxFor(model => model.Rebate, new { @class="form-txt-normal" }) %>

Я пытался вводить числа разными способами.

75: когда я даю ему что-то, что может быть проанализировано в int, оно сохраняет правильное значение в поле (как ни странно, при последующем отображении десятичная точка не отображается, только 75).

75.25: Я наблюдал за значением, которое передается в метод редактирования [HttpPost] (то же самое для Create). Когда вводится десятичное значение, переменная равна нулю. Мой выходной экран показывает, что произошло исключение:

A first chance exception of type 'System.Linq.Dynamic.ParseException' occurred in ContractManagementTool.DLL

Я также попытался 75,25, чтобы исключить настройки культуры о том, какой должна быть десятичная точка / запятая, но возникает та же проблема. У меня есть несколько других полей, которые содержат целые, они обрабатываются точно так же, с той лишь разницей, что Entity Framework знает их как Int32, а не как десятичное число. В Int32 все работает, в десятичном формате нет.

Я что-то здесь упускаю? Может ли MVC не работать с десятичными числами, так как он работает с целыми числами?

Дальнейшее обновление:

Я получил часть его работы. Я не изменил код (за исключением некоторого jQuery, я объясню).

Когда я ввожу 75,25, переменная Rebate правильно передается методу (что имеет смысл, поскольку я нахожусь в Бельгии, и мы используем ее для десятичных разрывов :)) Я добавил некоторые jQuery для замены. с, когда пользователь вводит данные, чтобы упростить его.

Когда я публикую переменную, десятичное значение Rebate имеет значение 75,25 (теперь EF вступает во владение с десятичной точкой). Rebate уже есть в моей сущности tblContract, которая передается методу. Я выполняю db.ApplyCurrentValues ​​(foo);

Теперь вот изюминка: в моей базе данных значение 75 сохраняется. Нет десятичной точки, ничего. Теперь я могу правильно передать его в свой метод, но не могу сохранить его в базе данных.

Окончательное обновление:

Я решил это. Для тех, кто интересуется ответом: если вы не укажете масштаб десятичной дроби, то это 0. Я, кажется, помню, что стандартом было 2 для EF, но я могу ошибаться.

1 Ответ

1 голос
/ 24 февраля 2012

Нашел это.Entity Framework устанавливает мое округление до десятичного целого числа (1,0).Изменены стандартные настройки, проблема решена:)

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