您好我已经尝试了几乎所有我在互联网上发现的关于" Cross Page Postback" .i成功转移到WebForm2但前一页始终为空,因此我无法从WebForm1接收任何数据。 这是我添加到我的WebForm1.aspx:
<div>
<asp:TextBox runat="server" ID="txttransferid" Visible="false"></asp:TextBox>
<asp:Button ID="btntransfer" runat="server" PostBackUrl="~/WebForm2.aspx"/>
</div>
以下是我添加到WebForm2.aspx中的内容:
<%@ PreviousPageType VirtualPath="~/WebForm1.aspx" %>
以下是我添加到WebForm2.cs中的内容:
protected void Page_Load(object sender, EventArgs e)
{
if (PreviousPage != null)
{
var id= ((TextBox)PreviousPage.FindControl("txttransferid")).Text;
}
}
这次我也尝试过使用异步PageLoad的Server.Transfer。
WebForm1.cs上的代码
protected void btntransfer_Click(object sender, EventArgs e)
{
Server.Transfer("~/WebForm2.aspx");
}
使用此WebForm2.cs代码:
protected async void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (PreviousPage != null)
{
var id=((TextBox)PreviousPage.FindControl("txttransferid")).Text;
}
var response = await APIGetOrderDetails(Convert.ToInt32(id),1);
DataSet ds = (DataSet)JsonConvert.DeserializeObject(response,
(typeof(DataSet)));
OrderDetailGrid.DataSource = ds;
OrderDetailGrid.DataBind();
}
}
使用Server.Transfer我成功转移到WebForm2并且前一页不是null所以我可以从WebForm1接收任何数据,但我总是立刻得到这个错误&#34; System.Web.HttpException:&#39;错误执行/WebForm1.aspx的子请求
InnerException&#34; InvalidOperationException:HttpServerUtility.Execute在等待异步操作完成时被阻塞。&#34;
最后,我试图在WebForm1上执行此操作:
protected async void btntransfer_Click(object sender, EventArgs e)
{
await Task.Run(() => Server.Transfer("~/WebForm2.aspx"));
}
错误消失但我想加载的网格从未加载。
请问任何想法?谢谢!