2011-02-07 76 views
3

我试图将张贴的数据从一页传递到下一页,但上一页总是等于空。PreviousPage =空的跨页张贴

这是我在原来的页面

<asp:Button ID="mmGo" runat="server" Text="Merge" PostBackUrl="~/Default2.aspx?action=merge"/> 

然后在下面的网页我有(一个UpdatePanel 内):

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %> 
<%@ PreviousPageType VirtualPath="~/Default.aspx" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 

    <div> 
     <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
    </div> 
    </form> 
</body> 
</html> 

...并在cs文件:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (PreviousPage != null) 
    { 
     string action = Request.QueryString["action"]; 
     if (action == "merge") 
     { 
      UpdatePanel SourceControl = (UpdatePanel)PreviousPage.FindControl("UpdatePanel1"); 
      HiddenField SourceTextBox = (HiddenField)SourceControl.FindControl("txtListIDs"); 
      if (SourceTextBox != null) 
      { 
       Label1.Text = SourceTextBox.Value; 
      } 
     } 
    } 
    else 
    { 
     Label1.Text = "page is not cross page post back!"; 
    } 
} 

任何想法为什么PreviousPage总是等于null?

回答

5

PreviousPage property返回使用Server.Transfer向此页面发送控件的页面。

如果由于直接请求(而不是从另一个页面传输或交叉发布)呈现当前页面,则PreviousPage属性包含null。

+0

因此,在按钮上使用PostBackURL属性不是传输或交叉邮件吗? – baked 2011-02-07 14:43:55

2

是的...它的工作...当你使用按钮或linkbutton,使用postbackurl,不要使用response.redirect。当您使用PostBackUrl属性,你可以有控制,控制上10页...参考观看此影片,,一项PostBackUrl和Response.Redirect的之间

http://www.youtube.com/watch?v=P1AqBtOYOMI

区别?

PostBackURL将所有表单数据发送到指定页面。而使用Response.Redirect发送表单数据到当前页面,然后将用户移动到指定页面