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í?