寫程式也一段時間,一直沒去搞懂一些東西
認真下定決心要去弄懂一些基礎知識
如有說錯也可以糾正<(-_-)>
在寫程式時,通常都會有一些基本防呆的檢查,長度檢查、必填檢查、格式檢查等等
在MVC中。可以透過對Model設定標籤,做到一些簡單的驗證
在後端透過ModelState.Isvalid判斷是否檢查通過
1.長度檢查
使用StringLength限制欄位的長度、還有另外一種MaxLength、MinLength
public class Product
{
[StringLength(10)]
public string ProductName { get; set; }
}
//還有限制最小長度的屬性、跟錯誤訊息設定
public class Product
{
[StringLength(10,ErrorMessage ="{0}長度需介於{2}到{1}",MinimumLength =5)]
public string ProductName { get; set; }
}
//還有MaxLength和MinLength
public class Product
{
[MaxLength(50,ErrorMessage ="最常限制50字")]
public string ProductName { get; set; }
[MinLength(3,ErrorMessage ="作者名稱要三個字")]
public string Ahthor { get; set; }
}
2.欄位必填
使用Required
public class Product
{
[Required(ErrorMessage ="必填欄位")]
public string Price { get; set; }
}
3.範圍檢查
第一個數字是最小值,第二個數值是最大值
使用Range,通常用於數字範圍的檢查
如果要比較日期,要使用typeof參數
public class Product
{
Range(1,100,ErrorMessage ="在1~100之間")]
public int Amount { get; set; }
//檢查日期在某一段範圍之內
[Range(typeof(DateTime),"2014/5/1","2014/5/31")]
public DateTime DeadDate { get; set; }
}
4.正則式驗證
使用RegularExpression,驗證欄位格式是否符合正則式規則
public class Product
{
[RegularExpression(@"^[a-zA-Z''-'\s]{1,10}$")]
public string Email { get; set; }
}
5.檢查兩個欄位是否一致
通常填寫表單時,會再讓使用者在輸入一次,確認資料一樣
像是密碼變更、或是電子郵件確認
就可以使用Compare
public class Product
{
[Compare("ConfirmPassword")]
public string Password { get; set; }
public string ConfirmPassword { get; set; }
}
6.自定義驗證
如果內建標籤滿足不了,可以自己寫驗證邏輯,可以使用CustomValidation
1.建立一個類別
2.新增一個回傳ValidationResult的靜態方法,一定要兩個參數,一個是要驗證的欄位資料,一個就是ValidationContext(也可以不用)
3.在要驗證的屬性上加入標籤,CustomValidation(typeof(類別名稱), "方法名稱")]
public class Product
{
[CustomValidation(typeof(CustomVali), "Invalid")]
public string ProductName { get; set; }
}
public class CustomVali
{
public static ValidationResult Invalid(string productname,ValidationContext validationContext)
{
return productname != null ? new ValidationResult("要填寫") : ValidationResult.Success;
}
}