asp.net core2 mvc 基礎教程-- model 模型驗證
阿新 • • 發佈:2020-06-28
例子
public class StudentCreateViewModel { [Display(Name = "名")] [Required]
[XssCode(ErrorMessage = "請不要填寫特殊字元")]//自定義驗證特性 public string FirstName { get; set; } [Display(Name = "姓"), Required(ErrorMessage="不能為空"), MaxLength(10)] public string LastName { get; set; } [Display(Name= "出生日期")] public DateTime BirthDate { get; set; } [Display(Name = "性別")] public Gender Gender { get; set; } }
內建特性
以下是一些內建驗證特性:
[CreditCard]
:驗證屬性是否具有信用卡格式。 需要JQuery 驗證其他方法。[Compare]
:驗證模型中的兩個屬性是否匹配。[EmailAddress]
:驗證屬性是否具有電子郵件格式。[Phone]
:驗證屬性是否具有電話號碼格式。[Range]
:驗證屬性值是否在指定的範圍內。[RegularExpression]
[Required]
:驗證欄位是否不為 null。 有關此屬性的行為的詳細資訊,[StringLength]
:驗證字串屬性值是否不超過指定長度限制。[Url]
:驗證屬性是否具有 URL 格式。[Remote]
:通過在伺服器上呼叫操作方法來驗證客戶端上的輸入。 有關此屬性的行為的詳細資訊
自定義驗證特性
/// <summary> /// XSS驗證 /// </summary> public class XssCodeAttribute : ValidationAttribute {public override bool IsValid(object value) { return value.TryToString().IsXss() == false; } }
這是其中一種自定義特性的寫法 這種寫法比較簡單
驗證後用 ModelState.IsValid 在控制器中做返回處理
或者 在過濾器中做全域性驗證處理
過濾器處理例子
public class XcActionFilter : IActionFilter { public void OnActionExecuting(ActionExecutingContext context) { if (!context.ModelState.IsValid) { var apiRes = new ApiResult<bool>() { Code = ApiEnum.Error.GetValue<int>() };//json 返回 foreach (var item in context.ModelState.Values) { foreach (var error in item.Errors) { apiRes.Msg += error.ErrorMessage + "|"; } } context.Result = new JsonResult(apiRes ); } } public void OnActionExecuted(ActionExecutedContext context) { } }
更多模型驗證用法請看 https://docs.microsoft.com/zh-cn/aspnet/core/mvc/models/validation?view=aspnetcore-3.1