0

ASP.NET 2.0 Web サイト モデルで、子ページのコード ビハインドから親ページのコード ビハインドのメソッドを呼び出す最良の方法は何ですか?

シナリオ:ユーザーが親ページのリンクをクリックして、データ レコードの詳細を子ページに表示します (親ページと子ページは別々のページです)。ユーザーは、クライアント ページのデータを変更します。子ページが更新を処理すると、子ページが閉じ、更新を反映するために親ページを再バインドする必要があります。

私は似たようなことをしましたが、親ページに含まれていたユーザーコントロールから親ページを呼び出していました

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

最も簡単な方法は、マルチビューなどを使用して 1 つのページですべてを行うことです。

それ以外は、javascriptで呼び出すことができます

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

親ページの URL を変更します。同じままにするか、クエリ文字列に何かを貼り付けて、Page_Loadでそれらの値をいじることができます

于 2008-12-17T20:55:07.780 に答える
0

子ページをモーダル ポップアップで開いている場合は、window.returnValue(JavaScript を介して) 親ページにアクセスしてから、ページの更新または Ajaxy の再バインド呼び出しを呼び出すことができます。

モーダルポップアップから値を返し、親ページでその値に基づいて何かを行う方法については、このページを確認してください。

ただし、オプションがあれば、編集フォームを別のページで開く必要はありません。編集フォームをユーザー コントロールに配置し、ライトボックス スタイルで表示/非表示にします。

于 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 に答える