1

「mydiv-clear」というマスター ページにポップアップとして機能する div があります。
div 'fade' 内にメイン ページのコンテンツがあります。

「return false;」を使用すると、Javascript OnClientClick で div (表示をなしからブロックに変更) を正常に「ポップアップ」できます。OnClientClick でポストバックを防止します (div は、ポストバックで display:none に戻ります)。

ポップアップ内の追加機能のために C# OnClick コントロールを実行したいと考えています。return=false; がある場合 私の OnClientClick では、C# の OnClick コードをヒットできません。return=false; を削除すると ページがポストバックされ、ディスプレイが display=none; に戻りました。オンラインのソリューションでは、ボタンを UpdatePanel コントロールに移動するか、UseSubmitBehaviour=false を使用することが提案されましたが、どちらもうまくいきませんでした。

以下の解決策は、コードをブレークスルーすると、JavaScript が起動され (ポップアップが表示され)、ポストバックが発生し (ポップアップが消える)、C# が起動します。誰かがポストバックを防ぎ、それでもC#を起動する方法を提案できますか? ありがとう

。ネット

<asp:Button ID="btnOptOut" OnClientClick="div_show();" UseSubmitBehavior="false" OnClick="btnOptOut_Click" CssClass="btn btn-default" runat="server" Text="Opt Out" />

C#

protected void btnOptOut_Click(object sender, EventArgs e)
            {

                try
                {

                    _dal.createOptOutRecord(_myuser.id, _myuser.EmailAddress);

                    //More functionality to go here

                }

                catch(Exception ex)
                {


                }
            }

Javascript

 function div_show() {
    document.getElementById('mydiv-clear').style.display = "block";
    document.getElementById('fade').style.opacity = ".1";
}
4

1 に答える 1

1

ポストバックは常にボタンOnClickイベントで実行されます。UpdatePanel にある場合でも、(部分的な) ポストバックを実行します。ただし、div が外側にある限り、UpdatePanel は機能します。

ただし、div の可視性を維持する方法は複数あります。最初の使用例RegisterStartupScript

    protected void btnOptOut_Click(object sender, EventArgs e)
    {
        //call the div_show() function again after postback
        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "showDiv", "div_show()", true);
        //or set the visibility directly to the div after postback
        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "showDiv", "document.getElementById('mydiv-clear').style.display = \"block\";", true);
    }

2 番目の例では、グローバル変数を使用しています。

    public string divVisibility = "none";
    protected void btnOptOut_Click(object sender, EventArgs e)
    {
        divVisibility = "block";
    }

そして.aspxファイルで

    <div id="mydiv-clear" style="display: <%= divVisibility %>">myDiv</div>

UpdatePanel.aspx ページにを含む 3 番目の例。

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager>

<asp:UpdatePanel ID="UpdatePanel3" runat="server">
    <ContentTemplate>
        <asp:Button ID="btnOptOut" OnClientClick="div_show();" UseSubmitBehavior="false" OnClick="btnOptOut_Click" CssClass="btn btn-default" runat="server" Text="Opt Out" />
        <asp:Label ID="Label1" runat="server" Text="Does it work?"></asp:Label>
    </ContentTemplate>
</asp:UpdatePanel>

<div id="mydiv-clear" style="display: none">myDiv</div>

そして、コード ビハインドで。

    protected void btnOptOut_Click(object sender, EventArgs e)
    {
        Label1.Text = "Yes it does!";
    }
于 2016-08-30T11:04:17.330 に答える