Asp.Net(C#)跨页回发

时间:2009-09-05 04:35:39

标签: c# asp.net

我已经尝试使用跨页面回发从第1页到第2页的控件访问值,如下所示:

我的page1(Default.aspx)有一个LinkBut​​ton,我在首次加载页面时存储了一些信息:

<asp:LinkButton ID="btnNoticia" 
runat="server" Text="Leia ++" 
CommandName="NoticiaID" 
CommandArgument='<%# Eval("NoticiaID")%>' 
EnableViewState="True" 
PostBackUrl="Noticias.aspx" 
/> 

在我的page2(Noticias.aspx)中,我正在恢复“btnNoticia”中的值:

LinkButton btnLeiaMaisDefault = (LinkButton)Page.PreviousPage.FindControl("btnNoticia");

但它无法找到上一页发布的控件。我为“btnLeiaMaisDefault”获得了一个空值。

有些想法?

PS:第1页的LinkBut​​ton ID =“btnNoticia”位于UpdatePanel内。

谢谢

Josi

3 个答案:

答案 0 :(得分:1)

你不能简单地使用FindControl。因为您的控件可能处于另一个控件之下,所以您需要一个递归函数来迭代所有控件及其后代以获取指定的控件。

您可以将linkbutton控件放在面板控件下,并以这种方式访问​​它:

LinkButton btnLeiaMaisDefault = (LinkButton)Page.PreviousPage.Panel1.FindControl("btnNoticia");

或其他方式使用递归函数:

private Control FindControlRecursive(Control root, string id) 
{ 
    if (root.ID == id)
    { 
        return root; 
    } 

    foreach (Control c in root.Controls) 
    { 
        Control t = FindControlRecursive(c, id); 
        if (t != null) 
        { 
            return t; 
        } 
    } 

    return null; 
} 

答案 1 :(得分:1)

一样导航您的网址

PostBackUrl =“〜/ Default.aspx”

代码为

protected void Page_Load(object sender,System.EventArgs e)

{

    TextBox pvProductID = (TextBox)PreviousPage.FindControl("TextBox1");

    TextBox pvProductName = (TextBox)PreviousPage.FindControl("TextBox2");
    Label1.Text ="You came from: "+ PreviousPage.Title.ToString();        
    Label2.Text = "Product ID: " + pvProductID.Text.ToString();
    Label2.Text += "<br />Product Name: " + pvProductName.Text.ToString();

    string imageSource = "~/Images/" + pvProductID.Text + ".jpg";
    Image1.ImageUrl = imageSource;
    Image1.BorderWidth = 2;
    Image1.BorderColor = System.Drawing.Color.DodgerBlue;
}

我试过......它有效......

答案 2 :(得分:-1)

试试这个代码......它正在我这边工作.......

if (Page.PreviousPage!=null)
        {
            LinkButton btnLeiaMaisDefault = (LinkButton)Page.PreviousPage.FindControl("btnNoticia");
        }
希望它有所帮助。