Czy ktoś może podać dobre przykłady wywoływania funkcji JavaScript z CodeBehind i odwrotnie?
c#
javascript
asp.net
ssmsnet
źródło
źródło
Odpowiedzi:
Możesz spróbować tego:
źródło
Page.ClientScript.RegisterClientScriptBlock
jest wymagane zamiast tego zobacz ten post w celu uzyskania informacji . 2. Warto wspomnieć, że aby funkcja MyFunction () działała, funkcja MyFunction () musi być zdefiniowana przed tagami formularza lub wewnątrz nich, ale NIE po znaczniku końcowym </form> (w przeciwnym razie oczekiwany błąd Object będzie występują)ScriptManager.RegisterStartupScript(this.Page, typeof(Page), "text", "openDep()", true);
Pracuje.this.GetType()
rzuca mi błąd.asp:UpdatePanel
i zapisany w zdarzeniu przycisku. Co powoduje, że strona ogłasza zwrotną.C # do JavaScript: możesz zarejestrować blok skryptu do uruchomienia na stronie, jak poniżej:
zastąp
alert()
część nazwą swojej funkcji.Aby wywołać metodę C # z JavaScript, możesz użyć
ScriptManager
lubjQuery
. Osobiście używamjQuery
. Musisz ozdobić metodę, którą chcesz wywołać z JavaScript,WebMethod
atrybutem. Więcej informacji na temat wywoływania metody C # (wywoływanejPageMethod
) zjQuery
można znaleźć w poście Dave'a Warda .źródło
Wywołanie funkcji JavaScript z tyłu kodu
Krok 1 Dodaj swój kod JavaScript
Krok 2 Dodać 1 Menedżer skryptów w swojej Webform i dodać 1 przycisk zbyt
Krok 3 Dodaj ten kod do zdarzenia kliknięcia przycisku
źródło
ScriptManager
w tej odpowiedzi, a niePage.ClientScript
jak w innych odpowiedziach. Może być powiązany zasp:UpdatePanel
komentarzem pod zaakceptowaną odpowiedzią.Nie możesz tego zrobić bezpośrednio. W standardowych formularzach WebForm JavaScript jest interpretowany przez przeglądarkę, a C # przez serwer. To, co możesz zrobić, aby wywołać metodę z serwera za pomocą JavaScript, to.
WebMethod
jakattribute
w metodach docelowych.ScriptManager
ustawienieEnablePageMethods
jakotrue
.PageMethods
.Lubię to:
Krok 1
Etap 2: Dodawanie
ScriptManager
naPage
Krok 3: Wywołanie metody za pomocą JavaScript
Spójrz na ten link.
Aby wywołać funkcję JavaScript z serwera możesz użyć
RegisterStartupScript
:źródło
GetProducts()
funkcja jest po prostu funkcją związaną z kodem, która będzie znajdować się w kontrolerze w aplikacji MVC, więc tagi znajdują się na wierzchu dowolnej funkcji, którą chcesz umieścić w kontrolerze, który zamierzasz wywołać z JavaScript .Jeśli chcesz wysłać wartość jako parametr.
źródło
Inną rzeczą, którą możesz zrobić, jest utworzenie zmiennej sesji, która jest ustawiana w kodzie za nią, a następnie sprawdzenie stanu tej zmiennej i uruchomienie javascript. Dobrą rzeczą jest to, że pozwoli ci to uruchomić skrypt dokładnie tam, gdzie chcesz, zamiast zastanawiać się, czy chcesz, aby działał w DOM, czy globalnie.
Coś takiego: Kod za:
W javascript
źródło
Nie możesz. Codebehind działa na serwerze, podczas gdy JavaScript jest uruchomiony na kliencie.
Możesz jednak dodać coś
<script type="text/javascript">someFunction();</script>
do swojego wyniku i w ten sposób wywołać funkcję JS, gdy przeglądarka analizuje Twoje znaczniki.źródło
Możesz użyć dosłownego:
źródło
Kod IIRC jest skompilowany po stronie serwera, a javascript jest interpretowany po stronie klienta. Oznacza to, że nie ma bezpośredniego związku między nimi.
Z drugiej strony możesz komunikować się między klientem a serwerem za pomocą sprytnego narzędzia o nazwie AJAX. http://en.wikipedia.org/wiki/Asynchronous_JavaScript_and_XML
źródło
Wypróbuj to w Code Behind i zadziała w 100%
Napisz tę linię kodu w swoim pliku Code Behind
A to jest strona formularza internetowego
źródło
źródło
Przykład roboczy: _
Kod za
Możliwe pułapki: -
CodeBehind="History.aspx.cs"
wskazuje na niewłaściwą stronęźródło
Zauważyłem, że wiele odpowiedzi tutaj używa
ScriptManager.RegisterStartupScript
i jeśli masz zamiar to zrobić, nie jest to właściwy sposób. Właściwy sposób to użycieScriptManager.RegisterScriptBlock([my list of args here])
. Powodem jest to, że powinieneś używać RegisterStartupScript tylko podczas ładowania strony (stąd nazwa RegisterStartupScript).W VB.NET:
w C #:
Oczywiście mam nadzieję, że jest rzeczą oczywistą, że musisz zastąpić klucz swoim identyfikatorem klucza i prawdopodobnie powinieneś przenieść to wszystko do sub / funkcji / metody i przekazać klucz i jakiś obiekt JavascriptObject (jeśli twoja metoda javascript wymaga, aby twój argument był obiekt javascript).
Dokumentacja MSDN:
https://msdn.microsoft.com/en-us/library/bb338357(v=vs.110).aspx
źródło
użycie Twojej funkcji jest wystarczające
źródło
Tak to zrobiłem.
Kod HTML przedstawiający kontrolkę etykiety i przycisku jest następujący.
Funkcja JavaScript jest tutaj.
Kod wywołujący funkcję JavaScript jest tutaj.
źródło
to działa dla mnie
źródło
Ponieważ nie mogłem znaleźć rozwiązania, które było za kodem, co obejmuje wypróbowanie
ClientScript
iScriptManager
podobne do mutanic, a Orlando Herrera powiedział w tym pytaniu (obaj jakoś zawiedli), zaoferuję innym rozwiązanie front-end, które wykorzystuje kliknięcia przycisków, jeśli są w tej samej pozycji co ja. To zadziałało dla mnie:Znaczniki HTML:
JavaScript:
Po prostu używam przycisku ASP.NET, który wykorzystuje
OnClientClick
właściwość, która uruchamia funkcje skryptowe po stronie klienta, czyli JavaScript. Najważniejsze rzeczy, na które należy zwrócić uwagę, to użyciereturn
słowa kluczowego w wywołaniu funkcji oraz w samej funkcji. Przeczytałem dokumenty, które nie używają,return
ale przycisk kliknięcia nadal działa - jakoś to nie zadziałało dla mnie.return false;
Oświadczenie w funkcji określa odświeżenie strony nie powinno się zdarzyć. Możesz również użyć tego oświadczenia weOnClientClick
właściwości:OnClientClick="myFunction() return false;"
źródło
Użyłem ScriptManagera w Code Behind i działało dobrze.
Jeśli używasz UpdatePanel w ASP Frontend. Następnie wprowadź nazwę UpdatePanel i „nazwę funkcji” zdefiniowane za pomocą tagów skryptu.
źródło
Dziękuję "Liko", po prostu dodaj komentarz do jego odpowiedzi.
Dodano apostrofy (
'
) do zmiennej, w przeciwnym razie wyświetli się komunikat o błędzie:źródło
Nie można wywołać funkcji Javascript z CodeBehind, ponieważ plik CodeBehind zawiera kod, który wykonuje po stronie serwera na serwerze sieci Web. Kod JavaScript jest wykonywany w przeglądarce internetowej po stronie klienta.
źródło
Można uwidocznić metody C # na stronach za kodem, aby można je było wywołać za pomocą języka JavaScript przy użyciu atrybutu ScriptMethod .
Nie możesz wywołać JavaScript z CodeBehind - ten kod istnieje wyłącznie na kliencie.
źródło