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在处理的早些时候发生),同时也允许你需要通过的请求。