Wie öffne ich eine weitere Registerkarte beim Klicken ohne Aktualisierung der aktuellen Seite in ASP.NET Web Forms?

Ich möchte in der Lage sein, auf eine Schaltfläche zu klicken, die beim Klicken eine weitere Registerkarte öffnet. In meinem Fall geschieht dies mit zweiASP.Net Kontrollen, eineasp literal mit<form> Tags, um es als Submit-Button zu formatieren, weil ich es brauche, um ein @ zu habPOST Funktionalität. Der Code innerhalb desasp literal sieht wie folgt aus:

<input type='submit' id='openWindowButton' value = 'Open window'> 

mit einem gegebenenURL und_blank, um die neue Registerkarte zu öffnen. Ich benutze eine andere Asp-Steuerung, einLinkButton diesmal, um ein Ereignis bei Klick auszulösen und auch den Klick auf den Submit @ auszulösasp literal mitjavascript code. Es sieht aus wie das

<asp:LinkButton ID="literalID" OnClick="DoStuff" runat="server">Do stuff</asp:LinkButton>

AufDoStuff -Ereignis Ich muss Code ausführen, der das @ -Ereignis auffüllasp literal mit dem oben genannten Code, und nachdem es beendet ist, wird ein Klick auf den Submit-Button mit @ ausgelöopenWindowButton ID wie folgt:

function InvokeReportFormClick() {
            document.getElementById("openWindowButton").click();
            return false;
        }

Der Code für den Klick wird mit @ hinzugefüScriptManager.RegisterStartupScript Methode

Alles funktioniert auf diese Weise, der LinkButton füllt das Literal und klickt darauf, und das Literal öffnet eine Registerkarte. Das einzige Problem ist, dass die Seite neu geladen wird, und ich möchte dieses Verhalten vermeiden. Ich habe versucht, die Rückgabe am Ende des Skripts auf "false" zu setzen, aber wenn ich nur "false" von der JavaScript-Methode zurückgebe, wie oben zu sehen, wird die Seite immer noch neu geladen, und ich denke, es liegt an dem generierten Klick auf dasasp literal.

Ich könnte hinzufügen, ich füge return false für das Ereignis onclick auf dem @ hinzasp literal wie folgt eingeben:

<input type='submit' id='openWindowButton' value = 'Open window' onclick="return false;"> 

aber es stoppt das Öffnen der Registerkarte, die ich brauche.

Ich habe auch versucht, das @ zu setzasp:Linkbutton in einem (nUpdatePanel control wie in diesem Beispiel:

<asp:ScriptManager runat="server" ID="reportScriptManager">
</asp:ScriptManager>
<asp:UpdatePanel ID="updatePanelID" runat="server">
<ContentTemplate>

<asp:LinkButton ID="literalID" OnClick="DoStuff" runat="server">Do stuff</asp:LinkButton>
</ContentTemplate>
</asp:UpdatePanel>

Aber es aktualisiert immer noch die Seite, wie ich immer noch aus dem @ erraasp literal klicken. Und wenn ich das asp-Literal neben @ hinzufüLinkButton, die Seite wird nicht aktualisiert, aber ich erhalte die Fehlermeldung, dass

Uncaught TypeError: Eigenschaft 'click' von null kann nicht gelesen werden.

Welche ich denke, es passiert, weil die Seite nicht neu geladen wird, und dieasp literal Text wird nicht in die Seite geladen, wenn eine Klickaktion ausgeführt wird.

Wie kann ich das Neuladen der Seite stoppen und trotzdem die gleiche Funktionalität dieser Schaltflächen beibehalten? Freundliche Grüße

BEARBEITE

Ich habe bemerkt, dass die Schaltfläche zum Senden von @ gemacasp literal lädt das Formular nicht neu, da ein einfacher manueller Klick darauf nur die neue Registerkarte öffnet. Das Hauptproblem in diesem Fall ist also nur, die asp @ zu machLinkButton das Neuladen der Seite nicht auslösen.

In der .cs-Datei registriere ich mit dieser Methode mein Skript, das ausgeführt werden soll, nachdem ich auf den LinkButton geklickt habe, wie auf @ vorgeschlage asp.net forum:

RegisterStartupScript(Page page, Type type, string key, string script, bool addScriptTags)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage