0

私のコード ビハインド ファイルでは、ユーザーにユーザー名とパスワードを要求する html モーダル ポップアップを呼び出しています。先に進む前に、関数の呼び出し元のコードに結果を返したいと思います。どうすればいいですか?現在、モーダルフォームが表示されており、C# コードは処理を続けていますが、これは理にかなっていますが、私が望むものではありません。注: モーダル サインオフ html モーダル フォームには、Damo に感謝する他のコード ビハインド関数を呼び出すボタン (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 -->
4

1 に答える 1

1

このようにModalPopupExtender設計されていないようです。モーダル(ユーザーがページの残りの部分と対話するのを防ぎます) ですが、ブロックしていません。フォームが呼び出された後もコードが実行され続けることを意味します。これは、ポップアップがクライアントで実行され、コード ビハインドがサーバーで実行されるためです。これは、アクションが実行されたときにクライアント コードがサーバーにコールバックするため、コールバックと呼ばれます。

これを機能させるには、キャンセル アクションを処理するボタンを指す属性をSignoffModal.Show();追加して、ロジックを「OK」部分と「キャンセル」部分に分割し、ボタンを追加する必要があります。CancelControlIDModalPopupExtender

  <!-- 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...
于 2012-08-25T23:00:23.707 に答える