4

我正在开发MVC5互联网应用程序,并对具有HTML数据的用户输入提出问题。MVC 5 - 从客户端检测到有潜在危险的Request.Form值

据我所知,如果我想在模型中使用HTML代码,我可以包含[AllowHtml]数据注释,然后清理对象字段。

我的问题是,对于没有[AllowHtml]数据注释的任何对象字段,用户输入一些HTML代码,是否可以迎合此错误而不是让Error.cshtml显示错误?

理想情况下,我想在Error.cshtml显示并记录错误之前在视图中显示验证消息。

这可能吗?如何在Error.cshtml显示并记录错误之前迎合错误。

在此先感谢。

UPDATE

我有一个函数作为Global.asax文件如下:

protected void Application_Error(object sender, EventArgs e) 

该功能捕捉我的错误,当用户进入到一个不但是存在一个页面,例如,有问题的http error直接转到error.cshtml文件。

如何编辑我的代码以便Application_Error函数捕获此错误?

我使用Elmah日志记录,并有customErrors mode="On"

回答

2

这不是那么容易写来检查,如果一个文本框不包含HTML验证程序。这是因为HTML不是由某些字符定义的,而是由它们的组合来定义的。包含<,'>'或甚至<script>的文本不一定是HTML。

你应该采取允许值的方法。如果一个文本框应该只包含数字,那么就像这样验证它。

通过Global.asax覆盖Application_Error您可以捕获该异常,如果你正在使用ELMAH事情更简单的用户重定向到一个更有意义的错误页面

protected void Application_Error() 
{ 
    Exception lastError = Server.GetLastError(); 
    if (lastError is HttpRequestValidationException) 
    { 
     //redirect to a static page and show proper error message 
    } 
} 

。 Elmah旨在与ASP.Net错误处理一起工作。

您需要删除默认的全局HandleErrorAttributeApp_Start\FilterConfig(或Global.asax),然后设置一个错误页面在Web.config

<customErrors mode="On" defaultRedirect="~/error/" /> 

如果你遇到麻烦,请查看这篇文章,它解释一切都很好
http://www.hanselman.com/blog/ELMAHErrorLoggingModulesAndHandlersForASPNETAndMVCToo.aspx

+0

你能看看我的更新吗? – user3736648 2014-12-08 08:33:28

+0

检查我更新的答案。 – 2014-12-08 09:03:28

+0

Application_Error()函数仍然没有捕获错误,而是显示error.cshtml。 – user3736648 2014-12-08 09:43:38

相关问题