Public Function mit Javascript in Code Behind aufrufen
Marco Thode
- asp.net
Hi!
In meinem ASP.NET Code Behind habe ich zwei Public Functions. myPublic1() und myPublic2().
Kann ich Javascript anweisen diese Methoden aufzurufen?
ich dachte:
If(expression)
{
myPublic1()
}
else
{
myPublic2()
}
Gruß
Moin!
In meinem ASP.NET Code Behind habe ich zwei Public Functions. myPublic1() und myPublic2().
Kann ich Javascript anweisen diese Methoden aufzurufen?
Welches Javascript? Clientseitiges oder serverseitiges? Die Anworten dazu sind in der Reihenfolge "Nein" und "Ja".
Wobei das "Nein" ergänzt werden kann um "Mit Workarounds gehts sicher irgendwie auch, beispielsweise mit AJAX - dann aber anders, als du vermutlich bisher planst".
- Sven Rautenberg
Sers
Welches Javascript? Clientseitiges oder serverseitiges? Die Anworten dazu sind in der Reihenfolge "Nein" und "Ja".
Clientseitig.
Könnte ich nicht irgendwas mit doPostBack('','') machen und übergebene Parameter im Page_Load Event auslesen? Ich weiss nur leider nicht wie man das macht.
Gruß
Moin!
Welches Javascript? Clientseitiges oder serverseitiges? Die Anworten dazu sind in der Reihenfolge "Nein" und "Ja".
Clientseitig.
Könnte ich nicht irgendwas mit doPostBack('','') machen und übergebene Parameter im Page_Load Event auslesen? Ich weiss nur leider nicht wie man das macht.
Nein. Überlege dir mal genau, welcher Ablauf passiert:
1. Client ruft die URL deines ASP-Skriptes auf.
2. ASP-Skript generiert HTML-, CSS- und Javascript-Output und wird beendet.
3. Server sendet den Output zum Browser.
4. Browser zeigt den Output an.
5. Der Benutzer verursacht eine Javascript-Aktion...
Und an dieser Stelle willst du eine Funktion eines Skriptes aufrufen, welches schon lange "gestorben" ist - wird wohl nicht gehen. Du mußt also in jedem Fall einen erneuten HTTP-Kontakt zum Server herstellen.
AJAX ist derzeit das modernste Mittel, um das zu realisieren. Die Alternativen wären versteckte Frames oder IFrames, um einen unsichtbaren Bereich zu haben, in dem man mit Javascript ein Ergebnis vom Server anfordern (location.href passend verändern) und auslesen kann. Das bedeutet aber für dein Skript, dass es alle zur Funktionsausführung benötigten Daten irgendwie neu besorgen muß (Session, DB-Abfragen o.ä., etc.), weil es ein komplett neuer Skriptaufruf ist.
- Sven Rautenberg
Hi Sven,
grundsätzlich hast du Recht. Allerdings scheinst du das ASP.net
Programmiermodell nicht zu kennen, es unterscheidet sich sehr von
ASP Classic (von welchem du anscheinend ausgehst).
doPostBack(...) ist genau der Punkt an der von der Client-Seite ein
erneuter HTTP-Kontakt zum Server durch Absenden des Formulars in der
ASPX Seite an dieselbe Adresse eingeleitet wird. Damit wird auch die
Ausführung von serverseitigen Methoden wie der AP es will wieder
möglich.
Eine ASPX Seite von ASP.net ist fast ausschließlich immer über ein
<form>...</form> auf der Client-Seite realisiert.
Aber der AP ist trotzdem auf dem falschen Weg.
Grüße, Frank
Hi Frank
Aber der AP ist trotzdem auf dem falschen Weg.
Magst du mir nicht einen Hinweis geben.
Hallo,
wie Sven Rautenberg schon in seinen Ausführungen bemerkte, das, was du
vorhast deckt sich nicht mit deinen Lösungsansätzen. :)
Du solltest dich nochmal eingehend mit dem ASP.net Programmiermodell
beschäftigen (generell gesehen).
Zu deinem eigentlichen Problem:
Damit solltest du selbst auf eine adäquate Lösung deines Problems kommen.
(doPostBack(...) ist grundsätzlich die richtige Richtung)
Grüße,
Frank
Hi!
Zu deinem eigentlichen Problem:
- Warum und wann (auf Basis welcher Begebenheit) willst deine öffent-
lichen Methoden ausführen?
Ich wollte meine Seite in einen Zustand versetzten die mir diese (jetzt nicht mehr öffentliche) Methode bereitstellt. Eine clientseite javascript Funktion bietet mir nun eine fast gleiche Funktionalität. Ich denke das ist eh' eine bessere Vorgehensweise, außerdem spare ich dadurch einmal das Nachladen.
- Was tut ASP.net um dir die Reaktion auf einen Button-Klick zu
ermöglichen?
Ich bekomme kein Click-Event, weil ich auf das Ergebnis einer Confirm-Box reagieren möchte. Klar, da wird auch ein Button gedrückt aber kann ich auf dessen Events reagieren?
(doPostBack(...) ist grundsätzlich die richtige Richtung)
Dennoch interessiert mich, wie ich einen doPostBack Parameter abfragen kann oder ist das im Code Behind nicht möglich. Ich könnte mir vorstellen mit Request.Form oder etwas ähnlichem aber wie?
Gruß
Hallo,
Javascript, Confirm-Box ... da gab es doch neulich schon Threads hier
im Forum zu?!
Wann sollte denn das Javascript "IF(expression) { ... }" ausgelöst werden?
[ ] beim Laden der Seite? Dann rufe doch deine public Methoden direkt
im Page_Load Event Callback auf
[ ] Klick/Aktion auf irgendeinem Control deiner ASPX Seite? Dann erzeuge
einen Subscriber (Event Callback) für das entsprechende Event auf
jenem Control ... und du wirst sehen, dass ASP.net selbsttätig
ein bisschen Javascript für den Client produziert (der imho auch
ein doPostBack beinhaltet)
Ein doPostback (für Event Reaktionen) wird als Argumente sehr oft die
typischen Event-Argumente (object sender, System.EventArgs e) an den
Server zurücksenden.
Schau dir am besten einfach mal ein Beispiel einer fertig-gerenderten
und ausgelieferten ASPX Seite an und untersuche mit welchen Argumenten
ein doPostBack ausgeführt wird. Vergleiche dies dann mit den registrierten
Events deines ASPX Quellcodes und ziehe deine Schlüsse. :)
Grüße, Frank
Hi!
Javascript, Confirm-Box ... da gab es doch neulich schon Threads hier
im Forum zu?!Wann sollte denn das Javascript "IF(expression) { ... }" ausgelöst werden?
Es soll das Ergebnis der confirm box sein. Also nach dem Klicken auf OK oder Abbrechen.
Gruß
Und wann (und warum) soll die Confirm-Box gezeigt werden?
Und was genau sollen deine beiden methoden machen, zumindest die eine
die ausgelöst werden soll, wenn der Benutzer auf "Cancel" geklickt hat?
Und wie fügst du das Javascript momentan ein?
Und wie sieht denn das gerenderte HTML aus, wenn du es mal ohne deine
Confirm-Box betreibst?
Ciao, Frank