public class CheckCreditNumberAttribute : ValidationAttribute
{
public CheckCreditNumberAttribute()
: base("Not a valid Account Number.")
{}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if(value!=null)
{
string input = value.ToString();
int i;
int sum = 0;
int count = 1;
for(i=input.Length-1;i>=0;i--)
{
if(count%2!=0)
{
sum += i;
}
else
{
int newNum = i * 2;
if(newNum>9)
{
newNum -= 9;
}
sum += newNum;
}
count++;
}
if(sum%10==0)
{
return ValidationResult.Success;
}
else
{
var errorMessage = FormatErrorMessage(validationContext.DisplayName);
return new ValidationResult(errorMessage);
}
}
return ValidationResult.Success;
}
} }
Oben ist eine benutzerdefinierte Annotationsklasse.Benutzerdefinierte Annotation in asp.net funktioniert nicht?
Dies ist in einer Modellklasse. Diese Annotation funktioniert nicht zur Laufzeit.
[Required(ErrorMessage = "Account Number is Required")]
[CheckCreditNumber(ErrorMessage = "Not a valid Account Number.")]
[Display(Name = "Bank Account Number")]
[RegularExpression(@"\d{14,16}",ErrorMessage ="Account number should be of 14-16 digits.")]
public string BankAccountNumber { get; set; }
Hier CheckCreditNumber ist eine Klasse erben validieren Attributklasse. Bitte schlagen Sie die richtige Lösung vor! Vielen Dank
Wird Ihre CheckCreditNumberAttribute.IsValid-Funktion beim Post-Zugriff ausgelöst? – User3250
Nein, das ist mein Problem. Es wird nicht getroffen. –
Bitte geben Sie Ihre Controller-Aktionsmethode an. – User3250