(十二)ASP.NET MVC 資料驗證

來源:互聯網
上載者:User

標籤:字元   功能   attr   word   號碼   遍曆   append   自訂   定義   

  ASP.NET MVC 會自動根據屬性的類型進行基本的校正,比如 int 類型的屬性,在提交非整數類型的資料的時候就會報錯。在 Action 中可以根據 ModelState.IsValid 進行判斷是否驗證通過,如果沒有通過,使用下面的方法可以擷取到報錯資訊:

public static string GetValidMsg(ModelStateDictionary modelState){        StringBuilder sb = new StringBuilder();        //遍曆所有的屬性        foreach (var key in modelState.Keys)        {            //如果當前屬性驗證通過,則直接下一個屬性            if(modelState[key].Errors.Count <=0)            {                continue;            }            sb.Append($"屬性【{key}】錯誤:");              //遍曆當前屬性的所有錯誤驗證資訊            foreach (var error in modelState[key].Errors)            {                sb.AppendLine(error.ErrorMessage);            }        }        return sb.ToString();}

  註:對於 ModelStateDictionary modelState, 要使用 System.Web.Mvc namespace 下的類。

 

  ASP.NET MVC 提供了在服務端驗證請求資料的功能,只要在對應 Model的屬性上標註 Attribute 就可以了。

常用驗證 Attribute:

  • [Required]:必填的 
  • [StringLength(100)]:字串最大長度100
  • [StringLength(100, MininumLength=10)]:字串長度在10至100之間
  • [RegularExpression("Regex")]:使用Regex進行匹配
  • [Range(35,80)]:數值範圍在35至88
  • [Compare("Password")]:標註這個 Attribute的屬性要跟 Password 屬性的值一樣
  • [EmailAddress]:要符合郵箱格式

  驗證 Attribute 上都有 ErrorMessage 屬性,可以用來自訂報錯資訊,ErrorMessage 中可以用 {0} 作為屬性名稱的佔位。

 

  對於有些驗證規則,我們可以進行自訂。比如驗證QQ號碼:

//ValidationAttribute 在System.ComponentModel.DataAnnotations 命名空間下public class QQNumberAttribute:ValidationAttribute{    public QQNumberAttribute():base(@"^d{5,10}$")    {        this.ErrorMessage = "{0}屬性不是合法的 QQ 號";    }}

  也可以重寫 IsValid() 方法:

public class QQNumberAttribute : ValidationAttribute{    public QQNumberAttribute()    {        this.ErrorMessage = "{0}屬性不是合法的 QQ 號";    }
public override bool IsValid(object value) { bool flag = Regex.IsMatch(value.ToString(), @"^d{5,10}$"); return flag; }}

 

(十二)ASP.NET MVC 資料驗證

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.