[英]Decimal field required in Entity Framework
我有一个简单的asp.net mvc c#应用程序,我首先使用EF代码。
我有一个类“学生”,它具有十进制类型的属性和其他类型为int的属性。 我不介意为什么在没有任何数据注释的情况下,decimal属性不会为null?
另一个问题是,当我运行我的应用程序时,带有decimal属性的文本框检索值170,6但是当我提交它时,它显示一个错误,表示170,6不是有效值,我必须更改它到170.6能够提交。
public class Student
{
public int StudentID { get; set; }
public string StudentName { get; set; }
public DateTime? DateOfBirth { get; set; }
public byte[] Photo { get; set; }
public decimal Height { get; set; }
public int Weight { get; set; }
public int changement { get; set; }
public Grade Grade { get; set; }
}
public class Grade
{
public int GradeId { get; set; }
public string GradeName { get; set; }
public string Section { get; set; }
public ICollection<Student> Students { get; set; }
}
我不明白为什么没有任何数据注释,decimal属性将不为null
C#中的decimal
是值类型。 它根本不能为null
。 与例如int
, double
, DateTime
。
170,6不是有效值,我必须将其更改为170.6才能提交。
这是文化/地区的常见问题。 我正在寻找关于这个主题的一个很好的重复问题,给出一个如何解决这个问题的有用链接。
这有点棘手,因为MVC必须生成在客户端允许提交的验证代码,并且客户端可以配置另一种文化。
编辑:你可以看看这个问题,它是公认的答案: MVC / JQuery验证不接受逗号作为小数点分隔符
对于第一个问题, decimal
是值类型,并且永远不能为null。 如果您希望它为null,您应该将其定义为decimal?
(这是Nullable<decimal>
引用类型包装器的快捷方式)。 确保数据库中的相应字段也为NULL
。
对于第二个问题,您应该确保您的请求线程与您的客户端具有相同的文化。 有很多方法可以做到这一点,尝试查看这个网站或谷歌。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.