私は MVC4 で作業しており、Uppercase属性を使用してモデルを定義したいと考えています。Uppercase 属性が存在すると、モデル値がサーバーに到着したときに大文字に変換されるという考えです。
現時点では、モデル内に次のコードがあります。
[Required]
[Display(Name="Account Code")]
[StringValidation(RegExValidation.AccountCode, Uppercase=true)]
public string Account
{
get { return _account; }
set
{
if (value != null)
_account = value.ToUpper();
}
}
しかし、私が本当に欲しいのはこれです:
[Required]
[Display(Name="Account Code")]
[StringValidation(RegExValidation.AccountCode)]
[Uppercase]
public string Account { get; set; }
ValidationAttributeモデルがサーバーにヒットしたときに確実に起動されるように、Uppercase 属性を として作成する必要があると思います。しかし、私は実際にデータを検証していないので、それは少し間違っているようです. より良い方法はありますか?
また、属性の呼び出し順序を保証する方法はありますか? StringValidationカスタム属性が起動する前に、データを大文字に変換したいと本当に思っています。これは、正規表現パターンのテキストの大文字と小文字をチェックするためです。
これに少し背景を追加するために、データを大文字にするコードを追加する必要性を減らしたいと思います。涅槃は、モデル バインディングまたは検証段階のいずれかで、サーバーへの途中でデータを更新する単一の属性になります。次に、この属性を属性で参照してStringValidation、そのチェックで使用される RegEx 値を修正できます。また、カスタムTextBoxForヘルパー メソッドでこの属性を検索text-transform: uppercaseして、クライアント側で正しく表示されるように追加することもできます。
誰かがそこに何かアイデアを持っていますか?