Pregunta

Al leer el código fuente Oxite, he encontrado que los validadores ahorrar mala fama propiedad con algunos sufijos (RequiredError, MaxLengthExceededError, InvalidError, formatError)

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."));

¿Cuál es el propósito de que los sufijos? ¿Cómo se usan?

¿Fue útil?

Solución

Mi conjetura es que son valores constantes, máquinas de usar que se pueden utilizar para identificar de forma exclusiva el error y se pueden utilizar para traer recursos localizados para su sitio globalizado.


Soy un buen adivinador:

    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;
    }

curioso, sin embargo. Desde excepciones generalmente no deben ser localizados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top