繁体   English   中英

从后面的子页面代码中调用方法后面的父页面代码-ASP.NET 2.0页面继承模型

[英]Calling a parent page code behind method from a child page code behind - ASP.NET 2.0 Page Inheritance model

在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;
}

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

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

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

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

更改父页面上的网址。 您可以将其保持不变,也可以将内容粘贴在查询字符串中,然后将这些值与Page_Load中的那些值混在一起

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

签出此页面以了解如何从模式弹出窗口中返回值,以及如何基于父页面上的值进行操作。

但是,如果您有选择的话,我将避免在单独的页面中打开编辑表单。 我将编辑表单放在用户控件中,并将其显示/隐藏为灯箱样式。

不知道这是否正是您想要的,但是您可以为此使用跨页面发布。 这使您可以从子页面发回到父页面,其优点是可以访问子页面的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

    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM