如何在没有回发的情况下运行Javascript OnClientClick和C#OnClick?

如何在没有回发的情况下运行Javascript OnClientClick和C#OnClick?,javascript,c#,asp.net,onclick,onclientclick,Javascript,C#,Asp.net,Onclick,Onclientclick,我的母版页中有一个名为“mydiv clear”的div作为弹出窗口使用。 我的主页内容在div“fade”中 如果我在OnClientClick中使用“return false;”来防止回发(div返回到display:none on postback),我可以使用Javascript OnClientClick成功地“弹出”我的div(将显示从none更改为block) 我想在弹出窗口中执行C#OnClick控件以获得额外的功能。当我有返回=假;在OnClientClick中,我无法点击我的

我的母版页中有一个名为“mydiv clear”的div作为弹出窗口使用。
我的主页内容在div“fade”中

如果我在OnClientClick中使用“return false;”来防止回发(div返回到display:none on postback),我可以使用Javascript OnClientClick成功地“弹出”我的div(将显示从none更改为block)

我想在弹出窗口中执行C#OnClick控件以获得额外的功能。当我有返回=假;在OnClientClick中,我无法点击我的C#OnClick代码。当我删除return=false时;我的页面被发回,我的显示返回到display=none;。在线解决方案建议将我的按钮移动到UpdatePanel控件或使用UseSubmitBehaviour=false,但这两种方法都不适用于我

当我破解代码时,下面的解决方案将触发我的javascript(弹出窗口出现),导致回发(弹出窗口消失),并触发我的C#。有人能建议一种方法来防止回发并仍然发射C#吗?谢谢

.Net

Javascript

 function div_show() {
    document.getElementById('mydiv-clear').style.display = "block";
    document.getElementById('fade').style.opacity = ".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);
    }
第二个示例使用一个全局变量

    public string divVisibility = "none";
    protected void btnOptOut_Click(object sender, EventArgs e)
    {
        divVisibility = "block";
    }
然后在.aspx文件中

    <div id="mydiv-clear" style="display: <%= divVisibility %>">myDiv</div>
然后是代码隐藏

    protected void btnOptOut_Click(object sender, EventArgs e)
    {
        Label1.Text = "Yes it does!";
    }
    <div id="mydiv-clear" style="display: <%= divVisibility %>">myDiv</div>
<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!";
    }