MVC 5 定義資料模型Metadata

摘要:MVC 5 定義資料模型MetaData

請記得引入

System.ComponentModel.DataAnnotations

務必加入,放在Jquery引入檔支下  通常會放在LAYOUT引入
不擺這行,下面驗證都出不來

@Scripts.Render("~/bundles/jqueryval")


原始

Public class Student
{
     public int No { set; get; }
     public string Name { set; get; }
     public int Score { set; get; }
}

把這個CLASS給頁面引入到Model 然後名字有對到就可以驗證了。

宣告主索引鑑

1. 直接把屬性名稱中含有id,並把欄位設成int

2. 

[key]
public int No { set; get; }

 

宣告必填欄位

[Require]

宣告允許Null欄位

public int? No { set; get; }

這個比較特別,在資料型態後面接問號

宣告欄位長度

[MaxLength(100)]
[MinLength(1)]

宣告預設欄位值

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public int No { set; get; }

PS:

使用欄位不再被Entity Framswork追蹤這個屬性的變化。

我個人的理解是,這欄位以SQL Server為主,如果Server上有預設資料,則會以他的資料為主。

 

宣告特定屬性不是資料庫欄位

[NotMapped]

 

[StringLength]   字串欄位允許的最大長度

[Required]         必填欄位

[RegularExpression]   欄位內容必須符合指定的規則運算式

[Range]  數字欄位必須符合的範圍

EX  [Range(1, 3, ErrorMessage = "不能長度為3以上或小於1的字串")]

[CustomValidation]   自訂欄位驗證規則

 

以下請引用 System.Web.Mvc

[Compare]用來比對兩個欄位是否輸入相同的字串

[Compare("password2")]
public string password1 {get;set;}
public string password2 {get;set;}

[Remote] 該欄位值利用AJAX送到指定的Action驗證

 

System.Web.Security

[MembershipPasswordAttribute]   透過Membership提供者所定義的密碼複雜度進行檢查


ScaffoldColumn 

主要是應用在View上

若是希望某些屬性不被基架產生在View上則 [ScaffoldColumn(false)]

 


DataType屬性

https://dotblogs.com.tw/mantou1201/2013/04/18/101814  饅頭小舖 - 覺得此作者整理得不錯
 


限制BIND欄位
Bind時通常會通通綁上去(有對應的欄位)
但是有些東西不應該綁 - 訂單時間 應該是下訂時才會有
Exclude是排除綁訂
Include是加入綁訂
 

[Bind(Exclude = "OrderDate") ]      //把此欄位排除
public partial class order
{
   public Nullable<System.DateTime> orderDate{get;set;}
}