从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;
}
更新:我必须从后面的代码执行此操作,因为子页面在数据更新后关闭。
答案 0 :(得分:1)
最简单的方法是使用多视图或其他类似的东西在一个页面上完成整个事情。
除此之外,使用javascript可以调用
document.opener.location.href = "url";
更改父页面上的网址。您可以保持相同,或者在查询字符串中添加内容并使用Page_Load上的这些值进行粘贴
答案 1 :(得分:0)
如果您在模式弹出窗口中打开子页面,则可以访问父页面上的window.returnValue
(通过JavaScript),然后调用页面刷新或Ajaxy重新绑定调用。
检查this page如何从模态弹出窗口返回值,并根据父页面上的值执行某些操作。
但是,如果您有选项,我就不会在单独的页面中打开编辑表单。我将编辑表单放在用户控件中,并将其显示/隐藏为灯箱样式。
答案 2 :(得分: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
}
}