繼承 ValidationAttribute 實作 CompareValuesAttribute,支援 Model 任意兩屬性的相等、不等、大小比較驗證。
public class CompareValuesAttribute : ValidationAttribute {
public string OtherProperty { get; set; }
public CompareValues Criteria { get; set; }
public CompareValuesAttribute(string otherProperty, CompareValues criteria) { ... }
protected override ValidationResult IsValid(object value, ValidationContext validationContext) {
// 取得另一屬性值、型別檢查、依 Criteria 執行比較、回傳驗證結果
}
}
public enum CompareValues { EqualTo, NotEqualTo, GreaterThan, LessThan, GreaterThanOrEqualTo, LessThanOrEqualTo }
public class MyModel {
public int StartValue { get; set; }
[CompareValues("StartValue", CompareValues.GreaterThan)]
public int EndValue { get; set; }
}
於需驗證的屬性標註屬性,指定比較目標屬性名稱與比較準則。驗證邏輯支援 IComparable 型別,自動整合至 MVC 模型驗證管線(客戶端/伺服器端)。