2009-08-15 12 views
5

Ich habe eine ASP.NET-Anwendung, die ASP.NET AJAX verwendet. Ich verwende das ASP.NET AJAX Toolkit, um einem Benutzer einen Dialog zu präsentieren. Wenn der Benutzer im Dialogfeld auf "Ja" klickt, möchte ich dieses Ereignis im folgenden Code behandeln. Ich habe jedoch festgestellt, dass mein Klickereignis nicht erreicht wird. Hier ist der Hauptcode:ASP.NET + ModalPopupExtender + Klick Ereignis

<asp:Panel ID="dialogContinuePanel" runat="server" style="display:none;" DefaultButton="yesButton">  
    <div>Are you sure you want to continue?</div> 
    <div> 
    <asp:ImageButton ID="yesButton" runat="server" AlternateText="Yes" ImageUrl="/resources/yes.png" OnClick="yesButton_Click" /> 
    <asp:ImageButton ID="noButton" runat="server" AlternateText="No" ImageUrl="/resources/no.png" /> 
    </div> 
</asp:Panel> 

<asp:LinkButton ID="hiddenLinkButton" runat="server" Text="" /> 
<cc1:ModalPopupExtender ID="dialogErrorExtender" runat="server" OkControlID="yesButton" 
    TargetControlID="hiddenLinkButton" PopupControlID="dialogContinuePanel" 
    CancelControlID="noButton" />      

My-Code Behind:

protected void yesButton_Click(object sender, EventArgs e) 
{ 
    string argument = yesButton.CommandArgument; 
    // Do some processing and redirect the user 
} 

Wie gehe ich das Click-Ereignis einer Schaltfläche, die mit einem ModalPopupExtender verwendet wird? Was mache ich falsch?

Antwort

11

Sie müssen die OkButton-Eigenschaft aus Ihrer modalen Popup-Extender-Definition entfernen. Ich weiß, dass dies scheinbar kontraintuitiv ist, aber wenn Sie diese Referenz hinzufügen, werden die Dinge tatsächlich auf der Client-Seite funktionieren, ohne Postbacks zu verursachen.

So einfach dies versuchen:

<cc1:ModalPopupExtender ID="dialogErrorExtender" runat="server" 
    TargetControlID="hiddenLinkButton" PopupControlID="dialogContinuePanel" 
    CancelControlID="noButton" /> 
+0

Dieses feste tatsächlich ein weiteres Problem, das ich hatte - eine Checkbox immer innerhalb eines modalen Dialogs Check-fähig zu sein. Das Festlegen der TargetControlID zu einer versteckten Verknüpfungsschaltfläche hat den Trick ausgeführt. - Thnks – MikeD