我做的是一个网上投票的系统,投票时可以设置投票时间,超过时间就不能投票了,页面强制跳转到其他页面。这如何实现啊?
 目前我用的是timer类,
public void OnTimer(Object source, ElapsedEventArgs e)
    {
        time--;
        if (time == 0)
        {
            Response.Redirect("zhuye.aspx");
        }
    }
但是这样报错说,响应在此上下文不可用。
在网上搜了搜,有的说,要改成
public void OnTimer(Object source, ElapsedEventArgs e)
    {
        time--;
        if (time == 0)
        {
            System.Web.HttpContext.Current.Response.Redirect("zhuye.aspx");
        }
    }
但是这样也有错,错误:未将对象引用设置到对象实例。
特来求助,有谁能帮忙给解决下。不一定必须用,timer类。只要能实现定时跳转的功能就行了。

解决方案 »

  1.   

    用js 实现, 时间用 ajax获取服务器时间
      

  2.   


    <script type="text/javascript">
         function getmessage() {
             //document.getElementById("message").innerHTML = 5;
             var s = document.getElementById("message").innerHTML;
             if (s > 1) {
                 document.getElementById("message").innerHTML = s - 1;
                 setTimeout(getmessage, 1000);
             }
             else {
                 window.location.href = 'Default2.aspx';
             }
             //alert(s);
         }
        </script><body onload="getmessage()">
        <form id="form1" runat="server">
     <p>页面将在 <span id="message">10</span> 秒后自动跳转...</p>
        </form>
    </body>
      

  3.   


                        function DigitalTime1(deadline,obj)   
                        {    
                        deadline= new Date(deadline);
                        var now = new Date();
                        var diff = -480 - now.getTimezoneOffset() //是北京时间和当地时间的时间差   
                        var leave = (deadline.getTime() - now.getTime()) + diff*60000 
                        var day = Math.floor(leave / (1000 * 60 * 60 * 24))   
                        var hour = Math.floor(leave / (1000*3600)) - (day * 24)   
                        var minute = Math.floor(leave / (1000*60)) - (day * 24 *60) - (hour * 60)   
                        var second = Math.floor(leave / (1000)) - (day * 24 *60*60) - (hour * 60 * 60) - (minute*60)   
                        var strResult ="距结束还有";
                        if(leave<0)
                        {
    //到时间-就跳转
                       location.href='zhuye.aspx';
                        }
                        else
                        {            
                             strResult += day*24 + hour +"小时";
                             strResult += minute +"分钟";
                             strResult += second +"秒";
                             obj.innerHTML= strResult;
                             setTimeout(function(){DigitalTime1(deadline,obj)},1000);   
                        }
                          obj.innerHTML= strResult;
                        }
      

  4.   

    母板页中的onloadprotected override void Render(HtmlTextWriter writer)
      {  System.IO.StringWriter sw = new System.IO.StringWriter();
      HtmlTextWriter htw = new HtmlTextWriter(sw);
      base.Render(htw);
      writer.Write(sw.ToString().Replace("<body", "<body onload=javascript:setup();"));
      } 

    window.onload = function() { 
       
    }  
      

  5.   

    Response.Write("<script>setTimeout(\"location.href='DepartmentInfo.aspx'\",3000)</script>");
    这个可以用,但是页面会变形,不知道为什么呢