ValidateRequest =“false”在Asp.Net 4中不起作用
我有一个表格,我使用ckeditor。 这种forms在Asp.Net 2.0和3.5中工作正常,但现在在Asp.Net 4+中不起作用。 我有ValidateRequest =“false”指令。 有什么build议么?
在错误页面find解决scheme。 只需要添加requestValidationMode =“2.0”
<system.web> <compilation debug="true" targetFramework="4.0" /> <httpRuntime requestValidationMode="2.0" /> </system.web> MSDN信息: HttpRuntimeSection.RequestValidationMode属性
有一种方法可以将validation返回到2.0页面。 只需将下面的代码添加到您的web.config中:
 <location path="XX/YY"> <system.web> <httpRuntime requestValidationMode="2.0" /> </system.web> </location> 
 我知道这是一个古老的问题,但如果你在MVC 3中遇到这个问题,那么你可以使用[ValidateInput(false)]来修饰你的ActionMethod ,并closures一个ActionMethod请求validation,这很方便。 而且您不需要对web.config文件进行任何更改,因此您仍然可以在其他地方使用.NET 4请求validation。 
例如
 [ValidateInput(false)] public ActionMethod Edit(int id, string value) { // Do your own checking of value since it could contain XSS stuff! return View(); } 
这在不改变validation模式的情况下工作。
 您必须使用System.Web.Helpers.Validation.Unvalidated助手。 它将返回一个UnvalidatedRequestValues对象,该对象允许在不validation的情况下访问表单和QueryString。 
例如,
 var queryValue = Server.UrlDecode(Request.Unvalidated("MyQueryKey")); 
适用于我的MVC3和.NET 4。
 请注意,另一种方法是保持4.0validation行为,但要定义从RequestValidator派生自己的类并进行设置: 
 <httpRuntime requestValidationType="YourNamespace.YourValidator" /> 
  ( YourNamespace.YourValidator很好,你应该可以猜到…) 
这样你就保持了4.0s行为的优点(特别是validation在处理的早些时候发生),同时也允许你需要通过的请求。