Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从子页面代码隐藏调用父页面代码隐藏方法-ASP.NET 2.0页面继承模型_C#_Asp.net_Web Site Project - Fatal编程技术网

C# 从子页面代码隐藏调用父页面代码隐藏方法-ASP.NET 2.0页面继承模型

C# 从子页面代码隐藏调用父页面代码隐藏方法-ASP.NET 2.0页面继承模型,c#,asp.net,web-site-project,C#,Asp.net,Web Site Project,在ASP.NET 2.0网站模型中,从子页面的代码隐藏调用父页面的代码隐藏中的方法的最佳方式是什么 场景:用户单击父页面中的链接以查看子页面中数据记录的详细信息(父页面和子页面是两个独立的页面)。用户将在客户端页面中修改数据。一旦子页面处理了更新,子页面将关闭,我需要重新绑定父页面以反映更新 我做了类似的事情,但它是从包含在父页面中的用户控件调用父页面 if(Page.GetType().ToString().Contains("ASP.Default_aspx")) { MethodI

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

更改父页面上的url。您可以保持原样,或者在查询字符串中粘贴内容,并在Page_Load上使用这些值进行修改。如果您在模式弹出窗口中打开子页面,您可以访问父页面上的
窗口。returnValue
(通过JavaScript),然后调用页面刷新或Ajaxy重新绑定调用

查看如何从模式弹出窗口返回值,并基于父页面上的该值执行操作


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

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

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

我可以通过以下步骤来实现这一点
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

    }
}