在 ASP.NET 中使用 Ajax,在一 Updatepanel 面板中放一 TextBox、Button、Label当在文本框中输入<加字母后,比如输入“<u”后,单击 Button,此时就会出现下图中的错误实际我的程序中有一 Timer 控件,当用户输入上面的内容(还未输入完成),此时激发 Tick 事件,就会出现这样的错误,郁闷啊

解决方案 »

  1.   

    图片比较宽,单击图片在心窗口中打开
    http://hi.csdn.net/attachment/201104/24/4552946_1303632159FJ4j.gif
      

  2.   

    过滤HTML危险字符串  /// <summary>
            /// 去除HTML标记
            /// </summary>
            /// <param name="Htmlstring"></param>
            /// <returns></returns>
            public static string NoHTML(string Htmlstring)  //替换HTML标记
            {            //删除脚本
                Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase);
                //删除HTML
                Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"<!--.*", "", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(quot|#34);", "\"", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(amp|#38);", "&", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(lt|#60);", "<", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(gt|#62);", ">", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(nbsp|#160);", " ", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(iexcl|#161);", "\xa1", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(cent|#162);", "\xa2", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(pound|#163);", "\xa3", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(copy|#169);", "\xa9", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&#(\d+);", "", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"<img[^>]*>;", "", RegexOptions.IgnoreCase);
                Htmlstring.Replace("<", "");
                Htmlstring.Replace(">", "");
                Htmlstring.Replace("\r\n", "");
                Htmlstring = HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim();
                return Htmlstring;
            }
      

  3.   

    大家可能没理解我的意思,用户想输什么我无法控制,用户在输入的时候已经出错而不是在提交数据时才出错啊!,实际程序中用的是Timer控件,它定时激发Tick事件,而此时若用户的输入是“<uuu“什么的,就会出现错误!
      

  4.   

    应该不是ajax控件问题你换成html编辑器(比如ajax control toolkit里面的htmleditor或者fckeditor)吧,你在textbox输入html标签的应该就会出这种问题
      

  5.   


    不用Timer控件也是一样啊,看顶楼红色部分
      

  6.   

    和ajax应该没什么关系,是你递交的数据有危险,默认的设置屏蔽了html代码的输入,后台代码出错才导致javascript出错页面上面加validateRequest="false"没?.net4的话,可能还要在web.config里加
        <httpRuntime requestValidationMode="2.0" />
      

  7.   

    你把文本框和按钮标签都移到Updatepanel 面板外面,递交一下就可以看到错误的确切原因了从客户端(TextBox1="<u")中检测到有潜在危险的 Request.Form 值。 
    说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止。该值可能指示存在危及应用程序安全的尝试,如跨站点脚本攻击。若要允许页面重写应用程序请求验证设置,请将 httpRuntime 配置节中的 requestValidationMode 特性设置为 requestValidationMode="2.0"。示例: <httpRuntime requestValidationMode="2.0" />。设置此值后,可通过在 Page 指令或 <pages> 配置节中设置 validateRequest="false" 禁用请求验证。但是,在这种情况下,强烈建议应用程序显式检查所有输入。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkId=153133。 异常详细信息: System.Web.HttpRequestValidationException: 从客户端(TextBox1="<u")中检测到有潜在危险的 Request.Form 值。
      

  8.   

    你把文本框和按钮标签都移到Updatepanel 面板外面,递交一下就可以看到错误的确切原因了从客户端(TextBox1="<u")中检测到有潜在危险的 Request.Form 值。 
    说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止。该值可能指示存在危及应用程序安全的尝试,如跨站点脚本攻击。若要允许页面重写应用程序请求验证设置,请将 httpRuntime 配置节中的 requestValidationMode 特性设置为 requestValidationMode="2.0"。示例: <httpRuntime requestValidationMode="2.0" />。设置此值后,可通过在 Page 指令或 <pages> 配置节中设置 validateRequest="false" 禁用请求验证。但是,在这种情况下,强烈建议应用程序显式检查所有输入。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkId=153133。 异常详细信息: System.Web.HttpRequestValidationException: 从客户端(TextBox1="<u")中检测到有潜在危险的 Request.Form 值。
      

  9.   

    转换有问题,你可以采用#11楼的方法,在页面先加一个页面上面加validateRequest="false" 试试