我有一个页面要有很多表单项,提交前先用JS验证,但最后有一个验证码,因为验证码需要在后台SESSION["code"]验证,如果最后这个验证码后台验证失败,用Response.Write("<script>alert('验证码输入错误')</script>");或          Page.ClientScript.RegisterStartupScript()提示,都会导致表单刷新,值都没有了。请问如何做到后台验证失败提示表单不刷新。。

解决方案 »

  1.   

    用ajax验证,正确就返回true,并在返回方法中提交数据
      

  2.   

    ajax验证可以实现不刷新页面可以返回错误数据到前台。
      

  3.   

    因为我看到有一些网站可以用弹窗来解决提示验证码的,且表单不丢失,我觉得这样还是更方便。如果最后确实没办法再用AJAX
      

  4.   


    AJAX。。提交到一般处理程序。。返回验证结果
      

  5.   

    一个顺带的问题。为什么我用AJAX,在ashx文件中 string b = context.Session["code"].ToString();取不到值,提示未将对象引用到实例,而Session["code"]是已经设置的,在C#中可以取到
      

  6.   


    http://www.google.com.hk/search?q=ashx+IRequiresSessionState&hl=zh-CN&safe=strict&prmd=ivns&source=lnt&tbs=lr:lang_1zh-CN|lang_1zh-TW&lr=lang_zh-CN|lang_zh-TW&sa=X&ei=43AHTsGOLOqdmQXY782sDQ&ved=0CAcQpwUoAQ&biw=1022&bih=539
      

  7.   

    你前台JS验证事件是在哪里写的?提交按钮上还是form的onsubmit?如果是onsubmit,那么你后台验证后前台好像只有密码框会清空的,其他的不会变的
      

  8.   

    参考:“登录验证失败时,让验证码自动更新”
    http://www.cnblogs.com/insus/articles/1945539.html相关:
    http://www.cnblogs.com/insus/articles/1425377.html
      

  9.   


    如果是从js里传过来的建议使用request 用session的话建议把开头HttpContext加上....
      

  10.   

    我在生成验证码的时候,是把那个值直接存SESSION
    context.Session["code"] = checkCode; //将字符串保存到Session中,以便需要时进行验证
    然后是现在在ashx中用
    string b = context.Session["code"].ToString();取不到值
      

  11.   

    经查资料终于搞明白了:
    在ASHX中使用SESSION,必需引入命名空间using System.Web.SessionState;且必需继承接口IRequiresSessionState
    结贴,谢谢各位参与
      

  12.   

    asp.net ajax 或者更快的 jq  ajax