当前位置:  开发笔记 > 编程语言 > 正文

如何避免ASP.NET MVC中的HttpRequestValidationException呈现导致异常的相同视图

如何解决《如何避免ASP.NETMVC中的HttpRequestValidationException呈现导致异常的相同视图》经验,为你挑选了2个好方法。

我只想知道如何验证(或清理)ASP.NET MVC中的用户输入,以便无论提交的值如何都不会抛出HttpRequestValidationException.例如,使用文本输入,如果用户输入
,将导致异常并显示黄色死亡屏幕.我不希望这样.我想捕获异常并在当前视图中显示一个用户友好的错误,最好是控件加载了相同的值.

我找到了这个http://www.romsteady.net/blog/2007/06/how-to-catch-httprequestvalidationexcep.html,但它对我的目的没用.另外,我发现这个http://msdn.microsoft.com/en-us/library/aa973813.aspx并尝试放入模型绑定器但我无法工作.



1> 小智..:

使用最新版本的ASP.NET MVC(RC,在编写本文时),您可以在控制器类或操作方法上放置一个属性,例如:

[ValidateInput(false)]
public ActionResult create()
{
    // ...method body
}

ValidateInputAttribute位于System.Web.Mvc中.

但正如其他人所说,你必须执行自己的手动输入验证或清洁.

使用MVC 3,您还必须确保它在您的Web.config中:


使用MVC 3,您还必须确保它在您的Web.config中:``
如果ValidateInputAttribute接受字段名称(或名称列表),那将是非常好的,因此可以选择性地关闭验证.全部或全部都倾向于吮吸,导致重复劳动,并且通常只会使事情变得更加麻烦.

2> 小智..:

在ASP MVC 3中,您可以使用[AllowHtml]Model/ViewModel中各个字段/属性的属性来关闭该字段的验证,这非常好.我将此属性添加到我的模型中的某些字段,然后使用优秀的AntiXSS库(也可通过NuGet)通过调用Sanitizer.GetSafeHtmlFragment(mymodel.Description)(其中"Description"属性是我的视图模型上的字符串属性来清理用户输入,已[AllowHtml]应用属性)

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有