[英]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.