实体框架中需要的十进制字段

时间:2018-06-18 09:27:08

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

我有一个简单的asp.net mvc c#应用程序,我首先使用EF代码。

我有一个班级"学生"具有十进制类型的属性和其他类型为int的属性。我不介意为什么在没有任何数据注释的情况下十进制属性不为空?

另一个问题是,当我运行我的应用程序时,带有decimal属性的文本框检索值为170,6但是当我提交它时,它显示一个错误,表示170,6不是有效值而我有将其更改为170.6以便能够提交。

var theList = /*[[${route}]]*/


                            for (i = 0; i < theList.length; i++) {
                                 var coordinate = [/*[[${theList[i].longitude}]]*/,/*[[${theList[i].latitude}]]*/];
                                 coordinates2.push(coordinate);
                         }

2 个答案:

答案 0 :(得分:3)

  

我不明白为什么在没有任何数据注释的情况下,decimal属性不为null

C#中的

decimal是一种值类型。它根本不能是null。例如intdoubleDateTime

  

170,6不是有效值,我必须将其更改为170.6才能提交。

这是文化/地区的常见问题。我正在寻找关于这个主题的一个很好的重复问题,给出一个如何解决这个问题的有用链接。

这有点棘手,因为MVC必须生成在客户端允许提交的验证代码,并且客户端可以配置另一种文化。

编辑:你可以看看这个问题,这是接受的答案: MVC/JQuery validation does not accept comma as decimal separator

答案 1 :(得分:2)

对于第一个问题,decimal是值类型,永远不能为空。如果您希望它为null,则应将其定义为decimal?(这是Nullable<decimal>引用类型包装器的快捷方式)。确保数据库中的相应字段也是NULL

对于第二个问题,您应该确保您的请求线程与您的客户端具有相同的文化。有很多方法可以做,请尝试查看此网站或谷歌。