2

ASP.NET MVC アプリケーションでいくつかの検証を行う目的で、System.ComponentModel.DataAnnotations 名前空間をいじっています。

私は、RegularExpression アノテーションですでに問題に遭遇しています。

これらの注釈は属性であるため、定数式が必要です。

OK、正規表現文字列定数で満たされたクラスを使用できます。

問題は、C# パーサーに必要なエスケープ文字で正規表現を汚染したくないことです。私の好みは、正規表現をリソース ファイルに保存することです。

問題は、これらの文字列リソースは定数ではないため、データ注釈で使用できないことです!

これに対する解決策はありますか?

そうでない場合、これは検証に属性を使用することの重大な制限のようです。

4

3 に答える 3

3

C# では、必要なエスケープ コードは 1 つだけです (二重引用符)...逐語的な文字列リテラルを使用する場合:

@"like \this\ note \slash here does nothing only quote "" needs doubling
you can even use newline";

私はいつも正規表現を@"..."文字列で書きます - 多くの頭痛の種を避けます.

于 2009-12-08T06:28:30.627 に答える
0

リソースファイルから正規表現をロードするプロキシとして、このようなカスタム検証属性を作成できます。

于 2010-06-07T15:04:39.800 に答える
0

どうやら.NET 4には、「検証リソースへのアクセスを可能にする関数」として説明されているコンストラクターでFunc< string>を取る DataAnnotations 属性のオーバーライドがあります。

于 2009-12-09T01:59:55.090 に答える