ASP.NET MVC 的Validation方法

.net MVC 提供了三種驗證表單的輸入內容的方法,1和2的用法大同小異

  1. ValidationMessage
  2. ValidationMessageFor
  3. ValidationSummar

@Html.ValidationMessageFor 會從 ModelState 中取得錯誤訊息內容,並顯示出來,所以我們可以將要驗證的欄位和錯誤訊息,建立到Model當中。

public class Student
    {
        public int StudentId { get; set; }
        [Required(ErrorMessage = "請輸入學生姓名")]
        public string StudentName { get; set; }
        public int Age { get; set; }
    }

如果你在 Model 中有實作 輸入驗證 (Input Validation) 與 模型驗證 (Model Validation) 的話,錯誤訊息最終也是會寫到 ModelState 物件裡面,所以我們可以透過控制 ModelState 的內容來控制 View 的顯示邏輯。

建立一個View,並選擇Student這個Model

建立一個接收Post資料的Controller

可以得到以下的結果,發現驗證必填欄位的錯誤訊息。

直接在View上面修改驗證錯誤訊息

@Html.ValidationMessageFor(model => model.StudentName, “學生姓名ㄧ定要填寫!!”, new { @class = “text-danger” })

ValidationSummary

此方法是在Controller中 ,透過ModelState去加入驗證錯誤訊息,預設會在View的左上方(可以自行改變Summary的位置)

ModelState.AddModelError(string.Empty, “為何不填寫學生姓名”);