【发布时间】:2023-04-02 02:52:01
【问题描述】:
我有一个 aspx 页面,它通过 Server.Execute() 执行另一个 aspx 页面,因为我需要回发调用的 aspx 页面以获取会话变量。但是,我在我的代码中注意到,当调用 Server.Execute() 时,它不会等待被调用的页面加载并回发,代码只是继续,只有在函数完成后才加载页面?有谁知道如何解决这一问题?下面是我在父页面中用来调用我要加载的页面的代码。
Imports System.IO
Public Class TriggerPage
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Server.Execute("SvgForm.aspx", False)
'This variable is only populated after the SvgForm.aspx executes and posts back since the Session variable is initialized there
Dim htmlCode As String = Session("svgVariable")
End Sub
End Class
aspx页面代码:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="TriggerPage.aspx.vb" Inherits="TelerikChart.TriggerPage" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body onload="openWindow()">
<form id="form1" runat="server">
<div>
<telerik:RadScriptManager ID="RadScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js">
</asp:ScriptReference>
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js">
</asp:ScriptReference>
<asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js">
</asp:ScriptReference>
</Scripts>
</telerik:RadScriptManager>
<telerik:RadWindowManager ID="RadWindowManager1" runat="server"></telerik:RadWindowManager>
<telerik:RadScriptBlock ID="RadScriptBlock1" runat="server">
<script type="text/javascript">
function openWindow() {
window.open('svgForm.aspx'); return false;
}
function RefreshParentPage() {
document.location.href = document.location.href;
}
</script>
</telerik:RadScriptBlock>
</div>
</form>
</body>
</html>
【问题讨论】:
-
在我看来像 VB,而不是 C#
-
asp.net 是同一个概念...
-
为什么这个问题用 Telerik 和 javascript 标记?
-
因为所有 Telerik 图表都呈现为 SVG,这就是我正在抓取的内容,并且回发与 javascript 相关。
-
是什么让你认为它没有等待被调用的页面完成?如果您期望设置会话变量,则不会。 Server.Execute() 是一个完全不同的过程,因此是一个新的 Session。
标签: javascript asp.net vb.net telerik