【问题标题】:cross page posting跨页发帖
【发布时间】:2012-11-03 11:59:01
【问题描述】:

我只是在尝试跨页发布的示例。 我在 default.aspx 页面中添加了 1 个文本框和 1 个按钮

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
 <asp:Button ID="Button2" runat="server" Text="Button"  PostBackUrl="~/About.aspx"/>

我在 about.aspx 页面的代码隐藏文件中添加了以下代码

protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.PreviousPage != null)
        {
            TextBox SourceTextBox =
                (TextBox)Page.PreviousPage.FindControl("TextBox1");
            if (SourceTextBox != null)
            {
                Label1.Text = SourceTextBox.Text;
            }
            else
                Label1.Text = "no value";
        }
        else
            Label1.Text = "no value from previous page";
    }

当我在 textbox1 中输入一些文本并单击按钮时,它转到 about.aspx 但标签显示值“无值”,它没有显示 textbox1 的文本值,为什么这不能正常工作?

【问题讨论】:

  • 我刚刚制作了这个例子及其作品!因此,也许您使用母版页! ?
  • @Aristos:是的,我已经添加了母版页 Site.master
  • 这就是为什么,PreviousPage 是母版页,你必须在那里找到内容,然后是控件。
  • @Aristos:没什么,只是偶然发生的,你的答案是正确的,很好

标签: c# asp.net .net vb.net c#-4.0


【解决方案1】:

如果您有母版页,则代码Page.PreviousPage.FindControl("TextBox1"); 不起作用,因为TextBox1ContentPlaceHolder. 下,必须首先找到ContentPlaceHolder.,然后找到TextBox1

但是有一个最简单的方法来获取值:

把它放在上一页:

public string TextFromBox1
{
    get
    {
        return TextBox1.Text;
    }
}

并在重定向页面上声明 aspx 上的上一页为:

<%@ Reference Page ="~/PreviousPageName.aspx" %>

并在后面的代码中获取值:

if (Page.PreviousPage != null)
{
    if (Page.PreviousPage is PreviousPageClassName)
    {
        Label1.Text = ((PreviousPageClassName)Page.PreviousPage).TextFromBox1;
    }
    else
    {
        Label1.Text = "no value";
    }
}
else
    Label1.Text = "no value from previous page";

【讨论】:

  • 我测试并工作。如果没有母版页,您的代码可以正常工作,但是使用母版页就是这样。
猜你喜欢
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 2011-01-04
  • 1970-01-01
  • 1970-01-01
  • 2018-09-27
  • 2011-12-30
  • 1970-01-01
相关资源
最近更新 更多