2009-06-12 4 views
0

die Oxite Quellcode lesen, habe ich festgestellt, dass Validatoren schlechte Eigenschaft Name mit einigen Suffixen (RequiredError, MaxLengthExceededError, InvalidError, FormatError)Was ist der Zweck von Suffixen .RequiredError, .FormatError ist, etc

validationState.Errors.Add(CreateValidationError(user.Name, "Name.RequiredError", "Name is not set")); 

validationState.Errors.Add(CreateValidationError(user.Name, "Name.MaxLengthExceededError", "Username must be less than or equal to {0} characters long.", 256)); 

validationState.Errors.Add(CreateValidationError(user.Email, "Email.InvalidError", "Email is invalid.")); 

speichern Was ist der Zweck von deren Suffixen? Wie sie benutzt haben?

Antwort

1

Meine Vermutung ist, dass es sich um konstante, maschinenfreundliche Werte handelt, die zur eindeutigen Identifizierung des Fehlers verwendet werden können und zum Abrufen lokalisierter Ressourcen für Ihre globalisierte Site verwendet werden können.


Ich bin ein guter guesser:

protected ValidationError CreateValidationError(
     object value, string validationKey, string validationMessage, 
     params object[] validationMessageParameters) 
    { 
     if (validationMessageParameters != null && 
      validationMessageParameters.Length > 0) 
     { 
      validationMessage = string.Format(
       validationMessage, validationMessageParameters); 
     } 

     return new ValidationError(
      validationKey, 
      value, 
      new InvalidOperationException(
       localize(validationKey, validationMessage)) 
      ); 
    } 

    private string localize(string key, string defaultValue) 
    { 
     if (phrases == null) 
      phrases = localizationService.GetTranslations(); 

     Phrase foundPhrase = phrases 
      .Where(p => p.Key == key && p.Language == site.LanguageDefault) 
      .FirstOrDefault(); 

     if (foundPhrase != null) 
      return foundPhrase.Value; 

     return defaultValue; 
    } 

Neugierig, though. Da Ausnahmen generell nicht lokalisiert werden sollten.