我只想知道如何验证(或清理)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并尝试放入模型绑定器但我无法工作.
使用最新版本的ASP.NET MVC(RC,在编写本文时),您可以在控制器类或操作方法上放置一个属性,例如:
[ValidateInput(false)] public ActionResult create() { // ...method body }
ValidateInputAttribute位于System.Web.Mvc中.
但正如其他人所说,你必须执行自己的手动输入验证或清洁.
使用MVC 3,您还必须确保它在您的Web.config中:
在ASP MVC 3中,您可以使用[AllowHtml]
Model/ViewModel中各个字段/属性的属性来关闭该字段的验证,这非常好.我将此属性添加到我的模型中的某些字段,然后使用优秀的AntiXSS库(也可通过NuGet)通过调用Sanitizer.GetSafeHtmlFragment(mymodel.Description)
(其中"Description"属性是我的视图模型上的字符串属性来清理用户输入,已[AllowHtml]
应用属性)