碰到url限制了

以前做嘅的一个项目,今日客户打电话来话有个操作冇反应了,一检查原来喺因为浏览器对url长度嘅限制,url超过2K后浏览器就忽略操作,唔作任何反应。测试果阵剩系得200条数据,冇发现呢个问题,而家客户单次处理就有600几条数据,问题就暴露出来。

谂过用cookies或form,cookies同样有限制,而用form有好多地方要改比较麻烦,而且.Net跨页面传递好鬼麻烦,最后用鸟食轩嘅方法,加咗个模态窗口,将数据ID先传递到模态窗口,由模态窗口变成session后转入处理页面,由页面还原参数。而且咁做仲有一个好处,就喺可避免原页面提交向服务器端postback大量数据、减少咗带宽占用、提高速度。

< script runat = " server " >
    
' 通过本页面将数据提交变成session,可避免原页面提交向服务器端postback大量数据(form、state),提高速度
     Protected   Sub Page_Load(ByVal sender As ObjectByVal e As System.EventArgs) Handles Me.Load
        CheckLogin()

        Response.Write("<table cellpadding=0 cellspacing=0 border=0 width='100%' height='100%'><tr><td align='center' valign='middle'>")
        Response.Write(
"<img src='images/loading.gif' align='middle' /><label style='font-size:14px;'>正在处理操作请求,请稍候……</label>")
        Response.Write(
"</td></tr></table>")
        Response.Flush()
        
        
Dim SessionName As String = "NEWCERTTRAN_ID"
        
If Session(SessionName) IsNot Nothing Then Session.Remove(SessionName)
        
        
If Page.IsPostBack Then
            
If CheckParam() Then
                Session.Add(SessionName, HiddenField1.Value)
                ClientScript.RegisterStartupScript(Page.GetType, 
"ret""<script>window.returnValue=1;window.close();<" + "/script>")
            
Else
                Response.Write(
"<s" + "cript>alert('参数无效!');window.close();<" + "/script>")
                Response.End()
            
End If
        
End If
    
End Sub

    
    
Private   Function CheckParam() As Boolean
        
If HiddenField1.Value = "" Then Return False
        
Dim check As String() = HiddenField1.Value.Split(",")
        
Dim i As Integer
        
For i = 0 To check.Length - 1
            
If Not IsNumeric(check(i)) Then Return False
        
Next
        
Return True
    
End Function

</ script >

< html xmlns = " http://www.w3.org/1999/xhtml "   >
< head runat = " server " >
    
< link href = " css/red.css "  rel = " stylesheet "  type = " text/css "   />
    
< base target = " _self "   />
    
< META HTTP - EQUIV = " Pragma "  CONTENT = " no-cache " >
    
< META HTTP - EQUIV = " Expires "  CONTENT = " -1 " >
    
< script language = " javascript " >
    
function aff()
    {
      var e 
= document.getElementById("HiddenField1");
      
if (!e)
      {
        alert(
"内容控件丢失,请刷新页面再执行最后一步操作。");
        window.close();
      }
      
else
      {
        var v 
= window.dialogArguments;
        
if (!v)
        {
          alert(
"参数错误!");
          window.close();
        }
        
else
        {
          e.value 
= v;
          document.getElementById(
"form1").submit();
        }
      }
    }
    
</script>
    
<title>请稍候</title>
</head>
<body onload="aff()">
    
<form id="form1" runat="server">
        
<asp:HiddenField ID="HiddenField1" runat="server" />
    
</form>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值