7

の Web サイトで作業しており、別のページをロードするためasp.Netに使用しています。iframeという名前の別のページには、 という名前の c# の関数を呼び出す がDistricting.aspx含まれてasp buttonいます。これは asp ボタン コントロールです。onClick()DoneClicked()

<asp:Button ID="LinkButtonDone" CssClass="button button-yellow" runat="server" OnClick="DoneClicked" Text="Done" />

コード ビハインドでは、DoneClicked 関数:

protected void Doneclicked(object sender, EventArgs e)
    {
        // Some code here
        // Calling a function from Default page
    }

私がする必要があるのは、DoneClicked関数の最後で、Default.aspxページから関数を呼び出す必要があることです。

Default.aspx.csでは、iframe ページのコード ビハインドから関数にアクセスするにはどうすればよいでしょうか。

ありがとう:)

4

3 に答える 3

3

以下を試してみてください

コードビハインド

protected void Doneclicked(object sender, EventArgs e)
    {
        ScriptManager.RegisterStartupScript(this, this.GetType(), "scriptid", "window.parent.location.href='ParentPageName.aspx';", true);  
 }
于 2012-11-21T13:19:29.047 に答える
2

直接アクセスすることはできません (少なくとも推奨される方法ではありません)。

Default.aspx の共通コードを、両方のページで使用できるクラスに抽象化する必要があります。

于 2012-11-21T11:47:58.813 に答える
0

それを直接行うことはできませんが、javascript を使用して間接的に行うことはできます。

DoneClickedしたがって、次のように関数を呼び出すことができる非表示のボタンをデフォルト ページに作成します。

<div style="display:none">
    <asp:Button ID="Done" runat="server" ClientIDMode="Static" OnClick="DoneClicked " />
</div>

iframeロードされた場所の中でDistricting.aspx、JavaScriptを次のように使用してボタンをクリックすることで、「DoneClicked」を呼び出すことができます。

<script type="text/javascript">
   window.parent.document.getElementById('Done').click();
<script>

他のページClientIDMode="Static"からは、レンダリングされた ID が何であるかを知ることができないため、静的にしてください。静的 ID を持つ dot net 4 を使用しない場合は、javascript を使用してレンダリングされた ID をページに送信するか、他の方法でボタンを見つける必要があります。

window.parent.また、iframe を含むページのコントロールの DOM 構造を iframe から「見ることができる」ことにも注意してください。

于 2012-11-21T11:59:51.623 に答える