MVC 2 - 未保存十进制值

时间:2011-12-08 10:06:50

标签: c# asp.net-mvc-2 entity-framework-4 decimal

我目前正在为合同创建表单,其中一个字段用于折扣%,并且已在实体框架中声明为十进制。  当我在那里输入一个值并保存它时,我遇到了一个问题。

代码快速概述:

EF:tblContract - >回扣是一个十进制字段。

创建/编辑视图:

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

我尝试过以不同方式输入数字。

75:当我给它一些可以解析成int的东西时,它会在字段中保存正确的值(奇怪的是,当显示之后,没有显示小数点,只有75)。

75.25:我观察了传递给[HttpPost] Edit方法的值(与Create相同)。输入十进制值时,该变量为null。我的输出屏幕显示我发生了异常:

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

我还试过75,25来排除关于小数点/逗号应该是什么的文化设置,但是同样的问题也出现了。 我有几个包含整数的其他字段,它们以完全相同的方式处理,唯一的区别是实体框架将它们称为Int32,而不是Decimal。 Int32全部工作,Decimal没有。

我在这里遗漏了什么吗? MVC不能与Decimals一起使用,因为它与int一起工作吗?

进一步更新:

我有一部分工作。我没有改变代码(除了一些jQuery,我会解释)。

当我输入75,25时,Rebate变量被正确传递给方法(这是有道理的,因为我在比利时,我们使用,十进制中断:))我添加了一些jQuery来替换。当用户输入数据时,使其更容易。

当我发布变量时,十进制回扣的值为75.25(现在EF接管其小数点)。 Rebate已经在我传递给该方法的tblContract实体中。我执行db.ApplyCurrentValues(foo);

现在这里是妙语:在我的数据库中,保存了值75。没有小数点,没有。所以我现在可以正确地将它传递给我的方法,但我无法将其保存在数据库中。

最终更新:

我解决了。对于那些对答案充满好奇的人:如果你没有指定小数点,它就是0.我似乎记得EF的标准是2,但我可能会弄错。

1 个答案:

答案 0 :(得分:1)

找到它。实体框架将我的小数舍入设置为整数(1.0)。 更改了标准设置,问题解决了:)