Kann jemand gute Beispiele für das Aufrufen einer JavaScript-Funktion von CodeBehind und umgekehrt liefern?
c#
javascript
asp.net
ssmsnet
quelle
quelle
Antworten:
Sie können dies versuchen:
quelle
Page.ClientScript.RegisterClientScriptBlock
ist stattdessen erforderlich, stattdessen lesen Sie diesen Beitrag für Informationen . 2. Es kann erwähnenswert sein, dass MyFunction () vor den Formular-Tags oder innerhalb der Formular-Tags definiert werden muss, damit MyFunction () funktioniert, jedoch NICHT nach dem End-Tag </ form> (andernfalls wird ein Objekt-Fehler erwartet auftreten)ScriptManager.RegisterStartupScript(this.Page, typeof(Page), "text", "openDep()", true);
funktioniert.this.GetType()
wirft einen Fehler für mich.asp:UpdatePanel
und in ein Schaltflächenereignis geschrieben ist. Dadurch wird die Seite zurückgesetzt.C # zu JavaScript: Sie können den Skriptblock registrieren, um ihn auf einer Seite wie folgt auszuführen:
Ersetzen Sie das
alert()
Teil durch Ihren Funktionsnamen.Zum Aufrufen der C # -Methode aus JavaScript können Sie
ScriptManager
oder verwendenjQuery
. Ich persönlich benutzejQuery
. Sie müssen die Methode, die Sie aus JavaScript aufrufen möchten, mitWebMethod
Attributen dekorieren . Weitere Informationen zum Aufrufen der C # -Methode (aufgerufenPageMethod
) findenjQuery
Sie in Dave Wards Beitrag.quelle
Aufruf einer JavaScript-Funktion aus dem Code dahinter
Schritt 1 Fügen Sie Ihren Javascript-Code hinzu
Schritt 2 Fügen Sie 1 Skript-Manager in Ihre WebForm ein und klicken Sie auf die Schaltfläche 1 hinzufügen zu
Schritt 3 Fügen Sie diesen Code in Ihr Schaltflächenklickereignis ein
quelle
ScriptManager
wie in dieser Antwort verwenden, nichtPage.ClientScript
wie in anderen Antworten. Könnte mit demasp:UpdatePanel
Kommentar unter der akzeptierten Antwort zusammenhängen.Sie können dies nicht direkt tun. In Standard-WebForms wird JavaScript vom Browser und C # vom Server interpretiert. Sie können eine Methode mithilfe von JavaScript vom Server aus aufrufen.
WebMethod
wieattribute
bei Zielmethoden.ScriptManager
Einstellung hinzufügenEnablePageMethods
alstrue
.PageMethods
.So was:
Schritt 1
Schritt 2: Hinzufügen eines
ScriptManager
auf demPage
Schritt 3: Aufrufen der Methode mit JavaScript
Schauen Sie sich diesen Link an.
Um eine JavaScript-Funktion vom Server aufzurufen, können Sie Folgendes verwenden
RegisterStartupScript
:quelle
GetProducts()
Funktion ist nur eine Code- Behind -Funktion, die in einem Controller in einer MVC-App ausgeführt wird. Die Tags werden also über die Funktionen gesetzt, die Sie in einen Controller einfügen möchten, den Sie über JavaScript aufrufen möchten .Wenn Sie einen Wert als Parameter senden müssen.
quelle
Sie können auch eine Sitzungsvariable erstellen, die im Code dahinter festgelegt wird, den Status dieser Variablen überprüfen und dann Ihr Javascript ausführen. Das Gute daran ist, dass Sie Ihr Skript genau dort ausführen können, wo Sie möchten, anstatt herausfinden zu müssen, ob es im DOM oder global ausgeführt werden soll.
So etwas wie das: Code dahinter:
In Javascript
quelle
Du kannst nicht. Codebehind wird auf dem Server ausgeführt, während JavaScript auf dem Client ausgeführt wird.
Sie können jedoch
<script type="text/javascript">someFunction();</script>
zu Ihrer Ausgabe hinzufügen und so die JS-Funktion aufrufen, wenn der Browser Ihr Markup analysiert.quelle
Sie können wörtlich verwenden:
quelle
IIRC Code Behind wird serverseitig kompiliert und Javascript wird clientseitig interpretiert. Dies bedeutet, dass es keine direkte Verbindung zwischen den beiden gibt.
Auf der anderen Seite können Client und Server über ein nützliches Tool namens AJAX kommunizieren. http://en.wikipedia.org/wiki/Asynchronous_JavaScript_and_XML
quelle
Versuchen Sie dies in Code Behind und es wird 100% funktionieren
Schreiben Sie diese Codezeile in Ihre Code Behind-Datei
Und das ist die Webformularseite
quelle
quelle
Arbeitsbeispiel: _
Code dahinter
Mögliche Fallstricke: -
CodeBehind="History.aspx.cs"
zeigt auf eine falsche Seitequelle
Ich habe bemerkt, dass viele der Antworten hier verwendet werden,
ScriptManager.RegisterStartupScript
und wenn Sie das tun, ist das nicht der richtige Weg, dies zu tun. Der richtige Weg ist zu verwendenScriptManager.RegisterScriptBlock([my list of args here])
. Der Grund dafür ist, dass Sie RegisterStartupScript nur verwenden sollten, wenn Ihre Seite geladen wird (daher der Name RegisterStartupScript).In VB.NET:
in C #:
Natürlich hoffe ich, dass Sie den Schlüssel durch Ihre Schlüsselkennung ersetzen müssen und dies wahrscheinlich in eine Unterfunktion / Methode / Methode verschieben und den Schlüssel und ein JavascriptObject übergeben sollten (wenn Ihre Javascript-Methode erfordert, dass Ihr Argument ein ist Javascript-Objekt).
MSDN-Dokumente:
https://msdn.microsoft.com/en-us/library/bb338357(v=vs.110).aspx
quelle
Die Verwendung Ihrer Funktion ist ausreichend
quelle
So habe ich es gemacht.
Das HTML-Markup mit einem Beschriftungs- und Schaltflächensteuerelement lautet wie folgt.
Die JavaScript-Funktion ist hier.
Code dahinter zum Auslösen der JavaScript-Funktion ist hier.
quelle
das funktioniert bei mir
quelle
Da ich keine Lösung finden konnte, hinter der Code steckt, beinhaltet das Ausprobieren des
ClientScript
undScriptManager
wie mutanic und Orlando Herrera in dieser Frage (beide sind irgendwie gescheitert), biete ich anderen eine Front-End-Lösung an, die Tastenklicks verwendet, wenn Sie sind in der gleichen Position wie ich. Das hat bei mir funktioniert:HTML-Markup:
JavaScript:
Ich verwende einfach eine ASP.NET-Schaltfläche, die die
OnClientClick
Eigenschaft verwendet, die clientseitige Skriptfunktionen auslöst, nämlich JavaScript. Die wichtigsten Dinge, die hier zu beachten sind, sind die Verwendungen desreturn
Schlüsselworts im Funktionsaufruf und in der Funktion selbst. Ich habe Dokumente gelesen, die nicht verwendet werden,return
aber trotzdem die Schaltfläche zum Klicken erhalten - irgendwie hat es bei mir nicht funktioniert. Diereturn false;
Anweisung in der Funktion gibt an, dass ein Postback NICHT stattfinden soll. Sie können diese Anweisung auch in derOnClientClick
Eigenschaft verwenden:OnClientClick="myFunction() return false;"
quelle
Ich habe ScriptManager in Code Behind verwendet und es hat gut funktioniert.
Wenn Sie UpdatePanel im ASP-Frontend verwenden. Geben Sie dann den mit Skript-Tags definierten UpdatePanel-Namen und 'Funktionsnamen' ein.
quelle
Danke "Liko", füge einfach einen Kommentar zu seiner Antwort hinzu.
Einfache Anführungszeichen (
'
) zur Variablen hinzugefügt , andernfalls wird eine Fehlermeldung ausgegeben:quelle
Sie können keine Javascript-Funktion über CodeBehind aufrufen, da die CodeBehind-Datei den Code enthält, der die Serverseite auf dem Webserver ausführt. Javascript-Code wird im Webbrowser auf der Clientseite ausgeführt.
quelle
Mithilfe des ScriptMethod-Attributs können Sie C # -Methoden auf Codebehind-Seiten so verfügbar machen, dass sie über JavaScript aufgerufen werden können .
Sie können JavaScript nicht von einem CodeBehind aus aufrufen - dieser Code ist ausschließlich auf dem Client vorhanden.
quelle