MVC驗證05-自定義驗證規則、驗證2個屬性值不等

Darren Ji發表於2014-03-04

本文體驗2個屬性值不等。即當一個屬性輸入值,另外一個屬性輸入的值不能和第一個屬性值相等。相關文章包括:

MVC驗證01-基礎、遠端驗證  
MVC驗證02-自定義驗證規則、郵件驗證  
MVC驗證03-自定義驗證規則、禁止輸入某些值  
MVC驗證04-自定義驗證規則、日期範圍驗證 

 

  自定義驗證特性,繼承ValidationAttribute並實現IClientValidatable

這次重寫了基類的IsValid()方法的另外一個過載,因為該過載包含了驗證上下文ValidationContext,從中可以獲取屬性及屬性值。

MVC驗證05-自定義驗證規則、驗證2個屬性值不等展開

  View model

[NotEqualTo("UserName", ErrorMessage = "不能與使用者名稱的值相同")]用來比較屬性UserName的值。

MVC驗證05-自定義驗證規則、驗證2個屬性值不等展開

  擴充套件jquery的驗證,jQuery.validator.noteaualto.js

jQuery.validator.addMethod('notEaualTo', function(value, element, param) {
    //意思是表單值為空時也能通過驗證
    //但,如果表單有值,就必須滿足||後面的條件,否則返回false
    return this.optional(element) || value != $(param).val();
});
 
//第一個引數是jquery驗證擴充套件方法名
//第二個引數與rule.ValidationParameters["other"]中的key對應
//option是指ModelClientValidationRule物件例項
jQuery.validator.unobtrusive.adapters.add('notequalto', ['other'], function(options) {
    options.rules['notEqualTo'] = '#' + options.params.other;
    if (options.message) {
        options.messages['notEqualTo'] = options.message;
    }
});   

 

  Register.cshtml檢視

MVC驗證05-自定義驗證規則、驗證2個屬性值不等展開

效果:

不能相同

相關文章