Asp.net mvc 后缀.requireError、.FormatError等的用途是什么

Asp.net mvc 后缀.requireError、.FormatError等的用途是什么,asp.net-mvc,validation,oxite,Asp.net Mvc,Validation,Oxite,在阅读Oxite源代码时,我发现验证器使用一些后缀(RequiredError、maxlenghthexceedError、invalideError、FormatError)保存错误的属性名 谁的后缀的目的是什么?它们是如何使用的?我猜它们是恒定的、机器友好的值,可用于唯一标识错误,并可用于获取全球化站点的本地化资源 我猜得很好: protected ValidationError CreateValidationError( object value, string

在阅读Oxite源代码时,我发现验证器使用一些后缀(RequiredError、maxlenghthexceedError、invalideError、FormatError)保存错误的属性名


谁的后缀的目的是什么?它们是如何使用的?

我猜它们是恒定的、机器友好的值,可用于唯一标识错误,并可用于获取全球化站点的本地化资源


我猜得很好:

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

不过很奇怪。因为异常通常不应该本地化

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