以前做嘅的一个项目,今日客户打电话来话有个操作冇反应了,一检查原来喺因为浏览器对url长度嘅限制,url超过2K后浏览器就忽略操作,唔作任何反应。测试果阵剩系得200条数据,冇发现呢个问题,而家客户单次处理就有600几条数据,问题就暴露出来。
谂过用cookies或form,cookies同样有限制,而用form有好多地方要改比较麻烦,而且.Net跨页面传递好鬼麻烦,最后用鸟食轩嘅方法,加咗个模态窗口,将数据ID先传递到模态窗口,由模态窗口变成session后转入处理页面,由页面还原参数。而且咁做仲有一个好处,就喺可避免原页面提交向服务器端postback大量数据、减少咗带宽占用、提高速度。
<
script runat
=
"
server
"
>
' 通过本页面将数据提交变成session,可避免原页面提交向服务器端postback大量数据(form、state),提高速度
Protected Sub Page_Load() Sub Page_Load(ByVal sender As Object, ByVal 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() 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() 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>
' 通过本页面将数据提交变成session,可避免原页面提交向服务器端postback大量数据(form、state),提高速度
Protected Sub Page_Load() Sub Page_Load(ByVal sender As Object, ByVal 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() 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() 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>