【问题标题】:C#/asp.net geting error when sending data from one page to another [duplicate]C#/asp.net 将数据从一页发送到另一页时出错[重复]
【发布时间】:2012-10-07 22:39:17
【问题描述】:

可能重复:
Send data from one page to another in C# ASP.Net

您好,我正在尝试在 asp.net 中将数据从一个页面发送到另一个页面,我发现了各种这样做的方法,我将尝试一些方法来了解它们是如何工作的,但我第一次尝试时似乎遇到了错误。这是我的代码:

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" Text="Go" 
    PostBackUrl="~/Default2.aspx" />
<br />

我将数据从 Default.aspx 发送到 Default2.aspx。 在 Page_Load 方法的 Default2.aspx 中,我写了这个来检索数据:

  if (Page.PreviousPage != null)
    {
        string txtBox1 = ((TextBox)Page.PreviousPage.FindControl("TextBox1")).Text;
    }

从我在 MSDN 上阅读的内容来看,这应该可以,但我必须遗漏一些东西,因为当我按下按钮发送数据并加载 Default2.aspx 时,我得到一个如下所示的错误页面:

【问题讨论】:

  • 你在使用 Server.Transfer 吗?
  • 不,这是我用于此的全部代码。我使用 PostBackUrl="~/Default2.aspx" 将数据发送到 Default2.aspx
  • 那么您尝试做的事情没有意义。
  • 您能否发布一个答案,说明我应该如何编写代码以使其工作?

标签: c# asp.net


【解决方案1】:

如果您对 Default.aspx 使用母版页,则 Page.PreviousPage.FindControl 不起作用。因为在使用masterpage时,Default.aspx中的所有控件都放在ContentPlaceHolder中,而不是直接放在Form中。所以你可以使用下面的代码:

Page.PreviousPage.Form.FindControl("yourContentPlaceHolderID").FindControl("TextBox1");

我假设您使用母版页。否则,您的第一个代码必须有效。此外,如果您不使用母版页并且文本框放置在 PlaceHolder 或面板中,您的代码将无法正常工作。 FindControl 不会在子容器控件中递归搜索。

查看链接。 MSDN

【讨论】:

  • 是的,我正在使用母版页,谢谢您的信息
【解决方案2】:

Page.PreviousPage 仅在使用Server.Transfer 重定向到新页面时可用。如果这是标准的GETPOSTResponse.Redirect,则此代码将不起作用。

从您的上一页。使用Server.Transfer可以访问上一页数据。

【讨论】:

  • 如果我理解这一点,Server.Trasfer 将数据传输到第二页。对吧?如果那样的话,PostBackUrl="~/Default2.aspx" 不也是这样吗?
  • Server.Transfer 在同一请求中加载新页面(记住旧页面)。Response.Redirect 在新请求中加载新页面(忘记旧页面)。按钮上的PostBackUrl 只是定义要发布到哪个页面。
  • 我想你想要的只是((TextBox)this.FindControl("TextBox1)).Text;this.TextBox1.Text;
猜你喜欢
  • 2012-09-27
  • 1970-01-01
  • 2020-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-12
  • 2015-12-28
相关资源
最近更新 更多