【问题标题】:MVC 2 - Decimal value is not savedMVC 2 - 不保存十进制值
【发布时间】:2012-01-15 18:50:04
【问题描述】:

我目前正在为合同创建表单,其中一个字段是返利百分比,并且已在实体框架中声明为小数。 当我在此处输入值并保存时遇到问题。

代码概览:

EF: tblContract -> Rebate 是一个 Decimal 字段。

创建/编辑视图:

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

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

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

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

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

我还尝试了 75,25 来排除关于小数点/逗号应该是什么的文化设置,但同样的问题发生了。 我还有其他几个包含整数的字段,它们的处理方式完全相同,唯一的区别是 Entity Framework 将它们称为 Int32,而不是 Decimal。 Int32 都可以,Decimal 不行。

我在这里遗漏了什么吗? MVC 不能像处理整数一样处理小数吗?

进一步更新:

我得到了它的一部分工作。我没有修改代码(除了一些 jQuery,我会解释)。

当我输入 75,25 时,Rebate 变量被正确传递给该方法(这是有道理的,因为我在比利时并且我们使用 , 用于小数点:))我添加了一些 jQuery 来替换 . ,当用户输入数据时,它更容易。

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

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

最终更新:

我解决了。对于那些对答案感到好奇的人:如果您不指定小数位数,则为 0。我似乎记得 EF 的标准是 2,但我可能弄错了。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-02-04
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-25
      相关资源
      最近更新 更多