自定义验证(判断两个值同时唯一)
using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Globalization; using System.Linq; using System.Runtime.CompilerServices; using System.Web; using BLL.BLL; namespace www.nabian.com.Models { public class NameAndBearchValidation : ValidationAttribute { RegisterManagerBLL manager = new RegisterManagerBLL(); public string OtherProperty { get; set; } public string OtherPropertyDisplayName { [CompilerGenerated] get { return OtherPropertyDisplayName; } [CompilerGenerated] internal set { } } public override bool RequiresValidationContext { get { return RequiresValidationContext; } } public NameAndBearchValidation(string otherProperty) { if (otherProperty == null) throw new ArgumentNullException("otherProperty"); OtherProperty = otherProperty; } protected override ValidationResult IsValid(object value, ValidationContext validationContext) { var property = validationContext.ObjectType.GetProperty(OtherProperty); var other = property.GetValue(validationContext.ObjectInstance, null); if (manager.QueryComName(value.ToString()) <= 0 && manager.QueryComName(other.ToString(), value.ToString()) <= 0) { return ValidationResult.Success; } return ValidationResult.Success; } } }
测试
using System; using System.Collections.Generic; using System.Linq; using System.Web; using www.nabian.com.Models; namespace www.nabian.com.ViewsModels { public class textModel { [NameAndBearchValidation("comName", ErrorMessage = "两个属性不唯一")] public string name { get; set; } public string comName { get; set; } } }