[英]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.