当我在我的表单中输入 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