显示模态弹出登录后等待用户响应

时间:2012-08-25 21:31:09

标签: c# asp.net ajaxcontroltoolkit

在我的代码隐藏文件中,我调用了一个html模式弹出窗口,提示用户输入用户名和密码。 我想在继续之前从调用函数后面的代码中得到一个结果。 我该怎么做呢?现在显示模态形式,并且c#代码继续处理有意义,但它不是我想要的。 注意:模态签收html模式窗体有一个按钮(btnSignoff),它调用函数后面的一些其他代码 谢谢 达莫

代码背后:

SignoffModal.Show();
//Wait for response (this is what i would like to be able to do)
if (result <0)
{
//throw some error
}

else
{
// Do some more work
}

HTML代码:

 <!-- Signoff Modal Form -->
                <asp:HiddenField ID="SignoffForModal" runat="server" />
                <ajaxToolkit:ModalPopupExtender runat="server" ID="SignoffModal" BehaviorID="modalPopupExtenderSignoff"
                    TargetControlID="SignoffForModal" PopupControlID="popUpPaneSignoff" OkControlID="btnSignoff"
                    BackgroundCssClass="modalBackground">
                </ajaxToolkit:ModalPopupExtender>
                <asp:Panel ID="popUpPaneSignoff" runat="server" CssClass="confirm-dialog">
                    <asp:Label ID="lblUsername" runat="server" Text="Username"></asp:Label>
                    <br />
                    <asp:TextBox ID="txtUserName" runat="server" ToolTip="Username" Width="200px"></asp:TextBox>
                    <br />
                    <asp:Label ID="lblPassword" runat="server" Text="Password"></asp:Label>
                    <br />
                    <asp:TextBox ID="txtPassword" runat="server" ToolTip="Password" TextMode="Password"
                        Width="200px"></asp:TextBox>
                    <br />
                    <br />
                    <div class="base">
                        <asp:Button ID="btnSignoff" runat="server" Text="Signoff" />
                        <asp:LinkButton ID="LinkButton3" runat="server" CssClass="close" OnClientClick="$find('modalPopupExtenderSignoff').hide(); return false;" /></div>
                </asp:Panel>
                <!-- End Signoff Modal Form -->

1 个答案:

答案 0 :(得分:1)

看起来ModalPopupExtender不是这样设计的。虽然它是模态(阻止用户与页面的其余部分交互),但它不是阻止,意味着代码在调用表单后继续运行。那是因为弹出窗口正在客户端上运行,而代码隐藏运行服务器。这称为callback,因为客户端代码在执行操作时会回调到服务器。

要完成这项工作,您必须在SignoffModal.Show();之后在CancelControlID添加ModalPopupExtender属性,将 <!-- Signoff Modal Form --> <asp:HiddenField ID="SignoffForModal" runat="server" /> <ajaxToolkit:ModalPopupExtender runat="server" ID="SignoffModal" BehaviorID="modalPopupExtenderSignoff" TargetControlID="SignoffForModal" PopupControlID="popUpPaneSignoff" OkControlID="btnSignoff" // points to cancel button action CancelControlID="btnCancel" BackgroundCssClass="modalBackground"> 之后的逻辑拆分为“确认”部分和“取消”部分到处理取消操作的按钮,然后添加按钮:

<asp:Button ID="btnSignoff" runat="server" Text="Signoff" />
    // handles Cancel action...
    <asp:Button ID="btnCancel" runat="server" Text="Cancel" />
    ...
<!-- End Signoff Modal Form -->

...

btnSignoff

{ // Do some work... 代码隐藏事件处理程序中:

btnCancel

{ //throw some error... 代码隐藏事件处理程序中:

{{1}}