フォームにHTML文字を入力すると、ここで<br />
説明するように、ASP.NETは内部500例外をスローします。
A potentially dangerous Request.Form value was detected from the client (Name="<br />").
さて、悪意のある理由で使用される可能性のあるエンコードされていない文字から私を保護しています。
問題は、そしてこれは私の長い検索のどこにも答えられていないということです、それについて何をすべきかです。つまり、ユーザーが不正な文字を入力したときに、アプリケーションが一般的な内部サーバーエラーをスローするだけではいけません(<-などの矢印を描画している場合はどうなりますか)。
ModelState
「HTML文字を使用しないでください」などのエラーが表示されたページに戻るだけの方がよいでしょう。
しかし、これはどのように達成されるのでしょうか?エラーは私のコードに到達する前にスローされます。また、経由でオフにしてからvalidateRequest="false"
、アプリケーション内のすべてのフォームのHTML文字を検証して、エラーを返す必要はありません。
このタイプの検証を有効のままにして、別の方法で処理する方法はありますか?
明確化のためのコード:
Model
Public Class SomeModel
Public Property SomeField As String
End Class
Controller
<HttpPost>
Function SomeController(ByVal model As SomeModel)
' model.SomeField contains some HTML characters :O
' but it doesn't matter, since an internal error has occured :(
End Function