0

从 ASP.NET 2.0 网站模型中的子页面的代码调用父页面的代码隐藏方法的最佳方法是什么?

场景:用户单击父页面中的链接以在子页面中查看数据记录的详细信息(父页面和子页面是分开的页面)。用户将修改客户端页面中的数据。子页面处理完更新后,子页面将关闭,我需要重新绑定父页面以反映更新。

我做了类似的事情,但它是从包含在父页面中的用户控件调用父页面

if(Page.GetType().ToString().Contains("ASP.Default_aspx"))
{
    MethodInfo MyMethod = this.Parent.TemplateControl.GetType().GetMethod("MyMethod");
    MyMethod.Invoke(this.Page, null);
    MyMethod = null;
}

更新:我必须从后面的代码中执行此操作,因为子页面在数据更新后关闭。

4

3 回答 3

1

最简单的方法是使用多视图或类似的东西在一页上完成整个事情。

除此之外,您可以使用javascript调用

document.opener.location.href = "url"; 

更改父页面上的 url。您可以保持不变,或者在查询字符串中粘贴一些内容并在 Page_Load 上使用这些值

于 2008-12-17T20:55:07.780 回答
0

如果您在模式弹出窗口中打开子页面,您可以访问window.returnValue父页面(通过 JavaScript),然后调用页面刷新或 Ajaxy 重新绑定调用。

查看此页面以了解如何从模式弹出窗口返回值并根据父页面上的该值执行某些操作。

但是,如果您可以选择,我不会在单独的页面中打开编辑表单。我会将编辑表单放在用户控件中,并以 la lightbox 样式显示/隐藏它。

于 2008-12-17T20:55:51.167 回答
0

不确定这是否正是您想要的,但您可以为此使用跨页发布。这允许您从子页面回发到父页面,并具有访问子页面 ViewState 的优势。为此,您将按钮的 PostBackUrl 属性设置为子页面。然后,您可以在父页面中访问 PreviousPage 属性以从子页面检索值。所以在子页面中有一个按钮,例如:

<asp:Button ID="Button1" runat="server" Text="Update data" 
        PostBackUrl="~/Parent.aspx" onclick="Button1_Click" />

然后在 Parent.aspx Page_Load 事件中:

protected void Page_Load(object sender, EventArgs e) {

    if (IsCrossPagePostBack) {

        Page prevPage = this.PreviousPage;
        string myVal = prevPage.FindControl("myTextBox1").ToString();
        string myVal2 = prevPage.FindControl("myTextBox2").ToString();
        //etc

    }
}
于 2010-10-04T16:37:24.760 回答