ASP.NETページに「ValidateRequest=true」が含まれています。ただし、ASP.NETで検証したくないテキストボックスがページに1つあります。その1つのコントロールに対してそれを偽にする方法はありますか?存在しない場合、「潜在的な脅威」エラーがその特定のコントロールから発生していると仮定して、それを無視する方法はありますか?
ありがとう
ASP.NETページに「ValidateRequest=true」が含まれています。ただし、ASP.NETで検証したくないテキストボックスがページに1つあります。その1つのコントロールに対してそれを偽にする方法はありますか?存在しない場合、「潜在的な脅威」エラーがその特定のコントロールから発生していると仮定して、それを無視する方法はありますか?
ありがとう
私の質問を見てください。.NET 4.5 では、ページ リクエストの検証からコントロールを除外する機能がサポートされているようです。
http://msdn.microsoft.com/en-us/library/system.web.ui.control.validaterequestmode.aspx
私が知っている唯一の方法は、HttpRequest クラスの ValidateString を呼び出すことです。残念ながら、それはプライベートなので、反射して行う必要があります。
私はこれをテストしていません - 私が使用しているコードとまったく同じではありません。これは私が数年前に書いたコードから改作されているので、Microsoft がこれを簡単にする新しいものを持っているのかもしれません。
MethodInfo _validateMethodInfo = typeof(HttpRequest).GetMethod("ValidateString", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.InvokeMethod);
foreach (string key in Request.Form.AllKeys) {
if (key = "< skipped field name >") {
continue;
}
object[] parameters = { Request.Form[key], key, "Request.Form" };
_validateMethodInfo.Invoke(Request, parameters);
}