[RegularExpression]
コードをクライアントに書き込むときに、MVC のバリデーターから HTML エンコードされた値を取得しています。これはエラー メッセージの問題ではありませんが (後で表示するためにエンコードする必要があるため)、実際には正規表現を台無しにしています :) 文字列フィールドでは、私の正規表現は次のようになります。
[RegularExpression(@"^[^\<\>]*$", ErrorMessage = "May not contain <,>")]
これが mvc3 によって書き出されると、次のように表示されます。
<input ... data-val-regex-pattern="^[^\&lt;\&gt;]*$"
data-val-regex="May not contain &lt;,&gt;" .../>
編集:
- エンコーディングのために、それもキャッチしていましたが、次の
<>
ような単語にもつまずきました: t
ティムのようにg
ヤギのように- おそらく
;
、しかし私はそれをテストしませんでした
この正規表現の目的は、ページ上のすべての検証を無効にしてサーバー側で実行するのではなく、< と > を除外することです。このフィールドは複数の Unicode 言語を受け入れ、長さはわずか 12 文字です。
私の選択は次のようになります。
- 1 つのページで asp.net の入力サニティ チェックを無効にし、アクションでのみチェックします。
- 3 つ以上の Unicode 範囲 +/- ダッシュと数字 - .net + js compat に一致する複雑な正規表現を見つけます。
- クライアント側の検証を持たないカスタム正規表現バリデーターを作成する
- バリデーターを使用し
[Remote]
て、他のフィールドの場合と同様にサーバー側でそれを行います
私は今、#3 に傾いていますが、組み込み機能を維持する方法を見つけたいと思っています。この出力エスケープを無効にする方法はありますか?