說明:
之前提過Remote驗證預設沒有後端驗證,
雖然可以自行實作後端驗證。
但MVC提供了自訂驗證(Custom validation),
可自訂驗證邏輯,並含括前後端驗證,
既然是預設的,就來試看看吧。
實作:
首先,新增一類別做驗證,並宣告為sealed,
因該類別單純用來做驗證,
再繼承ValidationAttribute,並override IsValid(object value)方法,
方法內,編寫驗證邏輯。
P.S. 帶ValidationContext的isValid方法,
可存取ViewModel該驗證屬性的資訊。
掛上剛新增的類別,記得要using類別所在namespace。
但沒有觸發前端驗證??
因為繼承ValidationAttribute只有後端驗證,
所以要補上前端驗證,在驗證類別再加上實作IClientValidatable介面,
也就是實作GetClientValidationRules方法。
方法內,需建構ModelClientValidationRule instance,
其中ValidationType傳入字串需要小寫,用來連結前端的html attribute與js方法。
這個rule會render到該html element的attribute。
最後,透過實作jQuery.validator的自訂驗證方法。
前端驗證也觸發了。
參考資料:
http://www.c-sharpcorner.com/UploadFile/abhikumarvatsa/enabling-client-side-validation-on-custom-data-annotations-w/
http://demo.tc/post/687
https://jqueryvalidation.org/jQuery.validator.addMethod/
沒有留言:
張貼留言