gpt4 book ai didi

c# - MVC 2 - 不保存十进制值

转载 作者:太空宇宙 更新时间:2023-11-03 14:09:04 25 4
gpt4 key购买 nike

我目前正在为契约(Contract)创建表格,其中一个字段用于返利百分比,并且已在 Entity Framework 中声明为 Decimal。 我在此处输入值并保存时遇到问题。

代码快速概览:

EF: tblContract -> Rebate 是 Decimal 字段。

创建/编辑 View :

<%: 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 来排除关于小数点/逗号应该是什么的文化设置,但同样的问题发生了。我还有其他几个包含 int 的字段,它们的处理方式完全相同,唯一的区别是 Entity Framework 将它们识别为 Int32,而不是 Decimal。 Int32 都可以,Decimal 不行。

我是不是漏掉了什么? MVC 不能像处理整数那样处理小数吗?

进一步更新:

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

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

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

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

最后更新:

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

最佳答案

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

关于c# - MVC 2 - 不保存十进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8429215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com