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
__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.
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);
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.
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.
Fügen Sie diesen Code einfach zu Ihrem ASPX hinzu
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
ClientScript.GetPostBackEventReference (this, "");
Versuchen Sie, die Methode RegisterRequiresPostBack aufzurufen. Die ASP.NET-Laufzeit sollte den __doPostBack-Code enthalten.
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.
Ich hatte dieses Problem, als ich meinen eigenen Seitencode schrieb und vergaß, runat="server"
auf das Formularelement zu setzen.
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.
Eine Alternative: IE11 Browser Definitionsdatei einstellen
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.
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!
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!
ich hatte diesen Fehler und löste ihn durch Einfügen:
<form runat="server" style="display: none"></form>
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.
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 ...
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!
lnkDeactivate.Attributes("onclick") = ClientScript.GetPostbackClientHyperlink(lnkDeactivate, "deactivate")
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>
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.
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()
}
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.
Ich habe dies bekommen, als ich auf einen LinkButton geklickt habe. Dies wurde durch Hinzufügen von OnClick="LinkButton2_Click"
zum Markup behoben.