2012-05-02 7 views
0

次の属性:C#ASP.Net MVC RegularExpressionAttribute検証:負の表情ビハインドアサーション:レンダリング '<' の代わりに '<' の

<select name="ChannelName" id="ChannelName" data-val-regex-pattern="(?&lt;!Unknown).*" data-val-regex="value cannot be Unknown" data-val="true"> 

[RegularExpression(@"(?<!Unknown).*", ErrorMessage = "value cannot be Unknown")] 

は、次のHTMLにレンダリングされます

これは明らかに私が望むものではありません。 RegularExpressionAttributeのPatternプロパティを記述して、正しくレンダリングする方法はありますか? @ Html.Raw()と非常によく似た問題を解決することに成功したが、それはクライアント側にあった。

+1

あなたの正規表現が記述どおり正しくレンダリングされた場合、HTMLのページが壊れてしまいます。 '<'はHTMLでは特別な意味を持つことを忘れないでください。タグ区切り記号**として使用する以外の使用は、エスケープするか、CDATAで行う必要があります。あなたが実際に見ているのは正規表現の正しいレンダリングです。一緒に移動...ここに問題はありません。 – spender

+0

html属性の中に '<'を入れることができます。 –

+0

あなたの主張をサポートするための参照を提供してください。私はあなたが間違っていると思うが、もしあなたがそうでなければ新しいことを学ぶことを喜んでいるだろう。 – spender

答えて

0

なぜあなたは何を望んでいないのですか? & lt;誰か(検証フレームワーク)が表示される属性値を読み取るエスケープシーケンスです。<

+0

私はパターンレンダリングの事実に気付きました。なぜなら、検証が失敗したはずの場所で失敗したからです。私は確かにパターンを非難することを確信させるためにそれを2回、3回確認しなければなりません、そして、私は声明を返します。しかしネット上には数千もの類似の質問がないので、あなたが正しいと思われ、別の失敗の原因を探す必要があります。 –

0

正規表現が間違っていると思います。 (?<!Unknown).*は、テキストの前に「Unknown」がない位置があれば成功します。代わりに次の式を探していると思います。

^(?!Unknown) 

^文字列の先頭です。

Then(?!Unknown)は、「不明」で始まる文字列を防止します。

関連する問題