wake-up-neo.com

__doPostBack ist nicht definiert

Ich bekomme diesen Fehler, wenn ich versuche, einen __doPostBack auf einer meiner Seiten aufzurufen. Jede Seite, die ich im Projekt habe, benutze die Funktion __doPostBack, aber in dieser speziellen Seite bekomme ich diesen Javascript-Fehler.

ich habe im Internet gesucht und das Einzige, was ich gelesen habe, ist, dass dieser Fehler auftritt, wenn ich ein nicht geschlossenes Tag habe, aber ich überprüfe die Website und deren OK.

Fehler: __doPostBack ist nicht definiert Quelldatei: htt: // localhost: 99/ProjectName/Disable.aspx Zeile: 1

26
jmpena

__doPostBack() sollte automatisch in jedes ASP.NET-WebControl eingefügt werden, das einen Beitrag zurückgeben könnte. Sie klingen, als würden Sie es in einem von Ihnen geschriebenen Javascript manuell aufrufen. In diesem Fall müssen Sie ein WebControl einfügen, um sicherzustellen, dass die Funktion auf der Seite eingefügt wird.

10
James Curran

Der Laufzeit-/clientseitige Fehler __doPostBack ist für einige Stunden unangenehm. Es gab viele irreführende/falsche Hilfe im Netz. Ich habe die folgende Codezeile in das Page_Load-Ereignis der default.aspx.cs-Datei eingefügt und alles funktionierte gut, auf meinem System und in der Produktion mit GoDaddy.

ClientScript.GetPostBackEventReference(this, string.Empty);
35
Don Tato

Wenn die Seite kein Steuerelement hat, das ein Postback verursacht, wird __doPostBack () nicht als Funktionsdefinition ausgegeben. Eine Möglichkeit, dies zu überschreiben, besteht darin, diese Zeile in Ihren PagePreRender () einzufügen:

this.Page.ClientScript.GetPostBackEventReference(<a control>, string.Empty);

Diese Funktion gibt einen String zurück, der __doPostBack () aufruft. zwingt die Seite jedoch auch dazu, die Funktionsdefinition __doPostBack () auszugeben.

20
SAGExSDX

Ich habe aus Versehen vergessen, dass Skript-Tags immer schließende Tags haben müssen:

<script src="/Scripts/appLogic/Regions.js" />

Ich habe das Skript-Tag korrigiert:

<script src="/Scripts/appLogic/Regions.js" type="text/javascript" ></script>

und die Vernunft kehrte zurück.

16
Paul Keister

Fügen Sie diesen Code einfach zu Ihrem ASPX hinzu

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
12
Jose Luis

__doPostBack Funktioniert Jungs

Schreiben Sie diesen Code in Page Load

ClientScript.GetPostBackEventReference (this, "");

8
Raghubir Singh

Versuchen Sie, die Methode RegisterRequiresPostBack aufzurufen. Die ASP.NET-Laufzeit sollte den __doPostBack-Code enthalten.

4
Atanas Korchev

Im Wesentlichen geht es darum, dass zwei versteckte html-Elemente "eventtarget" Und "eventargument" sowie eine fehlende Funktion "__doPostBack" fehlen.

Diese fehlen im DOM.

Ich habe alle aufgeführten Fixes ausprobiert und keiner hat funktioniert. Wenn Sie jedoch eine Kombination aus JavaScript und JavaScript verwenden, gibt es eine unauffällige Lösung. Fügen Sie dies Ihrem Javascript bei document ready hinzu und Sie sind zu den Rennen bereit (Dies ist eine viel schnellere Alternative als die Installation des .net Framework 4.5 auf Ihrem Server. Wenn Sie jedoch 4.5 installieren können, ist dies der Weg).

if ($('#__EVENTTARGET').length <= 0 && $('#__EVENTARGUMENT').length <= 0) {
  $('#YOUR_ASPNET_FORMID').prepend('<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /><input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />');
}

if (typeof __doPostBack == 'undefined') {
  __doPostBack = function (eventTarget, eventArgument) { object
    var theForm = document.forms['YOUR_ASPNET_FORMID'];
    if (!theForm) {
      theForm = document.YOUR_ASPNET_FORMID;
    }
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
      theForm.__EVENTTARGET.value = eventTarget;
      theForm.__EVENTARGUMENT.value = eventArgument;
      theForm.submit();
    }
  };
}

Ich verstehe, dass einige der besagten Installation von 4.5 dieses Problem beheben. Das würde ich auf jeden Fall empfehlen. Wenn Sie jedoch wie ich an einer öffentlich zugänglichen Website mit einem in .net 4 eingebetteten cms-System arbeiten, ist dies möglicherweise eine einfachere Lösung, da möglicherweise keine neuen Fehler beim Aktualisieren Ihrer Plattform auftreten.

2
user3283145

Ich hatte dieses Problem, als ich meinen eigenen Seitencode schrieb und vergaß, runat="server" auf das Formularelement zu setzen.

2
rg89

Lösung für mein Problem: IIS ASP.NET Webforms generiert Webseiten abhängig von der Zeichenfolge des Benutzeragenten.

Mein IIS hatte keine Definition für den IE11-Browser. Daher wurde standardmäßig ein sehr einfaches Browserprofil verwendet, das nicht einmal JavaScript unterstützt. 

  • kurzfristige Lösung: Browser im Kompatibilitätsmodus ausführen. 
  • mittelfristige Lösung: Bereitstellung von .Net Framework 4.5.1, das IE11-Browserprofildefinitionen enthält.

Eine Alternative: IE11 Browser Definitionsdatei einstellen

2
Martin Sentker

Ich weiß, es ist eine Weile her, seit dieser Thread aktiv war, aber ich werde noch einen Hinweis für diejenigen hinzufügen, die in Zukunft kommen werden.

Die ClientScriptManager-Klasse verfügt über eine Reihe von Methoden, die den Umgang mit JavaScript-Postbacks verbessern. Insbesondere ist die Routine GetPostBackClientHyperlink . Es wiederholt eine Zeichenfolge, die Sie dann einfach dem clientseitigen Ereignis "onclick" des Elements zuweisen können. Bei jeder Verwendung dieser Methode werden automatisch die __doPostBack-Routine und alle erforderlichen ausgeblendeten Formularfelder generiert. Außerdem müssen Sie das JavaScript nicht selbst schreiben. Zum Beispiel habe ich dies in der PageLoad:

lnkDeactivate.Attributes("onclick") = ClientScript.GetPostbackClientHyperlink(lnkDeactivate, "deactivate")

In diesem Fall ist ClientScript die ClientScriptManager-Objektinstanz, die automatisch von der Seite zur Verfügung gestellt wird ... Ich habe sie nicht instanziiert. Im Postback verwende ich diesen Code, um das Ereignis zu erkennen:

If Not String.IsNullOrEmpty(Request("__EVENTARGUMENT")) AndAlso Request("__EVENTARGUMENT") = "deactivate") Then
  '-- do somthing
End If

Ich bin sicher, dass es bessere/sauberere Möglichkeiten gibt, dies anzuschließen, aber ich hoffe, Sie bekommen die Idee dahinter.

1
Justin
 this.Page.ClientScript.GetPostBackEventReference(<a control>, string.Empty); 

Dieser Trick hat für mich funktioniert. Ich hätte gerne gewusst, warum es nicht gerendert wurde ...

Vielen Dank!

1
Troy

Ich hatte dieses Problem gerade heute, aber keine der Lösungen, die ich fand, funktionierte, leider auch Ihre. Wenn also jemand dies liest und es für sie nicht funktioniert, probieren Sie es aus 

http://you.arenot.me/2010/11/03/asp-net-__dopostback-is-not-defined/

Ein Hoch auf die Hilfe, die mir dabei geholfen hat, herauszufinden, was schief gelaufen ist!

0
Colin Wiseman

ich hatte diesen Fehler und löste ihn durch Einfügen:

<form runat="server" style="display: none"></form>
0
Keivan Sabil...

Für mich funktionierte "__doPostBack" nicht auf allen Seiten, da ich mein Projekt mit Neuerer Version von Visual stdio kompilierte. Dann habe ich im Lösungs-Explorer doppelt auf Eigenschaften geklickt und "Target Framework" von .NET Framework 4.0 auf .NET Framework 3.0 geändert und danach das Wiederaufbauprojekt und es hat funktioniert. 

0
Alireza

Alte Frage, aber aktuelle Antwort: Wenn Sie eine ScriptManager haben, prüfen Sie, ob EnablePartialRendering aktiviert ist. Wenn ja, deaktiviere es, ich weiß nicht, warum es dort ein Problem ist ...

0
gobes

Ich bekam dies, weil sich mein Skript in einem Iframe befand, das "entsorgt" wurde (es war ein Telerik-Fenster, das geschlossen wurde). Der Code, der _dopostback () in meinem Iframe definiert, war nicht mehr vorhanden, aber der Code, der _dopostback () in meinem Iframe aufrief, hing immer noch herum. Ich liebe dieses JavaScript!

0
Josh Mouch
lnkDeactivate.Attributes("onclick") = ClientScript.GetPostbackClientHyperlink(lnkDeactivate, "deactivate")
0
Atul Pawar

Das Umhüllen meiner serverseitigen Steuerelemente in ein form-Element mit dem runat="server"-Attribut hat für mich funktioniert. In der asp-Umgebung sollte es nur ein form-Element mit runat="server"-Attribut geben. Andernfalls kann ein ernstes Problem auftreten.

<form runat="server" id="form1">
   <!-- Server side controls go here -->
</form>
0
Jamshaid Kamran

Eine weitere Ergänzung zu diesem Vintage Thread ....

Ich hatte diese Symptome beim Entwickeln einer Site mit JQuery Mobile und es stellte sich heraus, dass dies durch den Link verursacht wurde, dem ich auf die betroffene Seite folgte, ohne dass das rel="external"-Attribut gesetzt wurde. 

Dies bedeutet, dass JQuery den Inhalt der neuen Seite über AJAX geladen und in die aktuelle Seite "eingefügt" hat, anstatt das Ganze vollständig neu zu laden. Daher war das erforderliche Postback-Javascript erst nach einer vollständigen Seitenaktualisierung vorhanden.

0
Ted

ich habe diese Methode in meinem Skript verwendet, das das asp.net-Formular enthielt:

main form id sample:
<script src="myscript" />

<form id="frmPost" runat="server">
</form>

// myscript.js in Java script function
mypostboack: function () {
$('#frmPost').context.forms[0].submit()
}
0
user5292083

Ich hatte dieses Problem und manchmal ist es nur Dummheit. Ich schrieb es als __doPostback mit einem Kleinbuchstaben 'b', wobei es __doPostBack mit einem Großbuchstaben 'B' hätte sein sollen.

0
Mark Ibanez

Ich habe dies bekommen, als ich auf einen LinkButton geklickt habe. Dies wurde durch Hinzufügen von OnClick="LinkButton2_Click" zum Markup behoben.

0
WhatsInAName