Atributo maiúsculo que converte a entrada em maiúscula

Eu estou trabalhando no MVC4 e quero definir um modelo usando umUppercase atributo. A ideia seria que a presença do atributo Uppercase faria com que o valor do modelo fosse convertido para maiúsculas quando chegasse ao servidor.

No momento, tenho o seguinte código dentro do modelo:

    [Required]
    [Display(Name="Account Code")]
    [StringValidation(RegExValidation.AccountCode, Uppercase=true)]
    public string Account
    {
        get { return _account; }
        set
        {
            if (value != null)
                _account = value.ToUpper();
        }
    }

Mas o que eu realmente gostaria é isso:

    [Required]
    [Display(Name="Account Code")]
    [StringValidation(RegExValidation.AccountCode)]
    [Uppercase]
    public string Account { get; set; }

Eu acho que posso precisar criar o atributo Uppercase como umValidationAttribute para garantir que ele seja disparado quando o modelo atingir o servidor. Mas isso parece um pouco errado, já que não estou realmente validando os dados. Existe uma maneira melhor?

Além disso, existe alguma maneira de garantir a ordem de invocação nos atributos? Eu realmente quero converter os dados para maiúsculas antes do costumeStringValidation atributo incêndios, como isso verifica o caso do texto no padrão regex.

Para adicionar um pouco de fundo para isso, eu quero reduzir a necessidade de adicionar código para maiúscula os dados. O nirvana seria um único atributo, que atualiza os dados no caminho para o servidor, no estágio de associação ou validação do modelo. Este atributo pode então ser referenciado noStringValidation atributo para alterar o valor RegEx usado em suas verificações. Eu também posso procurar este atributo em um costumeTextBoxFor método auxiliar, de modo que eu possa adicionartext-transform: uppercase por isso parece correto no lado do cliente.

Alguém tem alguma idéia por aí?

questionAnswers(4)

yourAnswerToTheQuestion