首页 > 解决方案 > 实体框架中需要的十进制字段

问题描述

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

我有一个类“学生”,它具有十进制类型的属性和其他类型的 int。我不明白为什么没有任何数据注释的小数属性不会为空?

另一个问题是,当我运行我的应用程序时,具有小数属性的文本框检索值 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; }
}

标签: c#asp.net-mvcentity-framework

解决方案


我不明白为什么没有任何数据注释的小数属性不会为空

decimal在 C# 中是值类型。它根本不可能null。例如int, double, DateTime.

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

这是文化/语言环境的常见问题。我正在寻找关于此主题的一个很好的重复问题,以提供有关如何解决此问题的有用链接。

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

编辑:你可以看看这个问题,它被接受了答案: MVC/JQuery 验证不接受逗号作为小数分隔符


推荐阅读