Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 595|回复: 0

asp.net关于页面不回发的问题,寻求完美解决方案

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-4-26 16:02:44 | 显示全部楼层 |阅读模式

     原文地址:http://www.sufeinet.com/thread-4564-1-1.html

    这个问题我相信有不少人见过,就是使用系统的分页功能时,或者是使用系统控件,都会有一个回发的功能,

    这个功能是asp.net自动管理的,就是为了和我们后台的Cs代码连接起来,

    但是有时候这个方法并不会生成,正常情况下在页面的Form下面都会生成如下代码

    <script type="text/javascript">
    //<![CDATA[
    var theForm = document.forms['form1'];
    if (!theForm) {
        theForm = document.form1;
    }
    function __doPostBack(eventTarget, eventArgument) {
        if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
            theForm.__EVENTTARGET.value = eventTarget;
            theForm.__EVENTARGUMENT.value = eventArgument;
            theForm.submit();
        }
    }
    //]]>
    </script>

    但是我发现在一些电脑上,也不知道是什么情况就是没有这两个方法,然后就单击按钮或者是分页时就提示如下

    这很明显就是 __doPostBack方法不存在,

    我就奇怪了,为什么呢?

    而且在这个电脑上的所有浏览器都有一样,IE678 火狐,Google,等都是同样的效果。

    着实让人郁闷,所以来博客园请教一下大家看看这种问题应该怎么解决了,

    我到是想到一个比较次的方法,只能是在没有找到解决方案之后应的急

    代码如下

     <script type="text/javascript">
            function SetdoPostBack() {
                var html = document.body.innerHTML;
                if (html.toLowerCase().indexOf("dopostback") < 0) {
                    var sb = "<script type=\"text/javascript\">";
                    sb = sb + "//<![CDATA[";
                    sb = sb + "var theForm = document.forms['form1'];";
                    sb = sb + "if (!theForm) {";
                    sb = sb + "    theForm = document.form1;";
                    sb = sb + "}";
                    sb = sb + "function __doPostBack(eventTarget, eventArgument) {";
                    sb = sb + "    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {";
                    sb = sb + "        theForm.__EVENTTARGET.value = eventTarget;";
                    sb = sb + "        theForm.__EVENTARGUMENT.value = eventArgument;";
                    sb = sb + "        theForm.submit();";
                    sb = sb + "    }";
                    sb = sb + "}";
                    sb = sb + "//]]>";
                    sb = sb + "<\/script>";
                    document.write(sb);//大家不要管这个,这只是一个输出,正常情况下我是添加到一个Div里的,这里是为了方便查看
                }
        }
        setTimeout('SetdoPostBack()', 2000);//2秒之后开始检查
    

    上面的方法要用的话还需要加上两个属性不光是这两个方法没有生成,

    __VIEWSTATE等几个hidden控件,因为这个是自动生成的。可这些的生成规则实在是不好处理,不过我发现只要VIEWSTATE有的话另外的两个,只要是生成了,值为Null也不会影响的。

    不过这也只是应个急。

    还没有想到更好的办法。

    希望大家帮忙啊。

    根据我的分析,会不会是在某些Ip上在运营商或者是什么地方给屏蔽了一些东西,才使页面不会生成这个方法的。

    如果说是浏览器问题那可以排除了,因为我能测试的都测试了,

    这问题也不是全部都有,就是有那么几个用户的电脑。

    。。。。。。。。

    原文地址:http://www.sufeinet.com/thread-4564-1-1.html

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-22 21:17 , Processed in 0.061611 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表