2014-05-09 110 views
0

在我的代码中,我想更新记录并调用EncryptPDF函数。然后重定向到另一个页面。在response.redirect前执行代码

但我发现它不会在response.redirect之前执行代码。

根据微软信息,代码将在response.redirect之前终止。

如何强制代码在重定向到另一页之前执行?

是否有任何代码可以用作重定向? 感谢

If Not rec_old Is Nothing Then 
    For i = 0 To rec_old.Count - 1 

     rec_old.Item(i).CurrentRenumeration = False 
     dc.SubmitChanges() 

     If (rec_old.Item(i).RemFile Is Nothing Or rec_old.Item(i).RemFile = 0) Then 
      EncryptPDF(rec_old.Item(i).RenumID, rec_old.Item(i).SID) 
     End If 

     If i = rec_old.Count - 1 Then 
      LastRecord = True 
     Else 
      LastRecord = False 
     End If 
    Next 
End If 

dc.Dispose() 

Response.Redirect("XXX.aspx?SID=" & Request("SID") & "&SSID=" & GetProfile() & "&returnPath=12") 
+2

你需要摆脱'Next'和'Else'之间的'End If' - 我很惊讶代码甚至运行,因为我不希望它跟随'End If'后面的'Else'工作。 。 – Tim

+0

嗨,只是“复制和粘贴”的错误。没有其他情况 –

回答

0

尝试调用Response.Redirect的一个额外false属性 -

Response.Redirect("XXX.aspx?SID=" & Request("SID") & "&SSID=" & GetProfile() & "&returnPath=12", False) 

这里是解释(从这里http://forums.asp.net/t/1396869.aspx?Response+Redirect+True+False

如果你正在处理页面 “A” 的那么你发出重定向

Response.Redirect('Default.aspx",True) 

客户端将发送新页面的重定向,页面“A”将立即停止处理,因为会发生线程中止。这是重定向的默认行为。

如果您发出重定向为

Response.Redirect('Default.aspx",False) 

然后客户端将发送重定向的新的一页,但页面“A”将被允许继续进行处理。也许页面“A”有清理工作要做或什么的。当客户被重定向时,客户永远不会看到页面“A”的结果。