1. 程式人生 > 實用技巧 >asp.net core2 mvc 基礎教程-- model 模型驗證

asp.net core2 mvc 基礎教程-- model 模型驗證

例子

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