摘要: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追蹤這個屬性的變化。
宣告特定屬性不是資料庫欄位
[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;}
}