Piszę stronę internetową w ASP.NET. Mam kod JavaScript i przycisk przesyłania ze zdarzeniem kliknięcia.
Czy możliwe jest wywołanie metody utworzonej w ASP za pomocą zdarzenia click JavaScript?
javascript
c#
asp.net
onclick
MattSayar
źródło
źródło
Odpowiedzi:
Cóż, jeśli nie chcesz tego robić za pomocą Ajax lub w żaden inny sposób i po prostu chcesz, aby nastąpiło normalne ogłaszanie zwrotne ASP.NET, oto jak to zrobić (bez korzystania z innych bibliotek):
Jest to trochę trudne ... :)
ja. W pliku kodu (zakładając, że używasz C # i .NET 2.0 lub nowszego) dodaj następujący interfejs do swojej klasy Page, aby wyglądał jak
ii. Powinno to dodać (używając Tab- Tab) tę funkcję do twojego pliku kodu:
iii. W zdarzeniu onclick w JavaScript napisz następujący kod:
Spowoduje to wywołanie metody „RaisePostBackEvent” w pliku kodu z wartością „eventArgument” jako „argumentString” przekazaną z JavaScript. Teraz możesz zadzwonić na dowolne inne wydarzenie.
PS: To jest „podkreślenie-podkreślenie-doPostBack”… I nie powinno być spacji w tej sekwencji… W jakiś sposób broń masowego rażenia nie pozwala mi pisać podkreślenia, po którym następuje znak!
źródło
window.onbeforeunload = confirmExit; //debugger; function confirmExit() { var pageId = '<%= Page.ClientID %>'; var argumentString = 'ReleaseLock'; __doPostBack(pageId, argumentString); }
onkeyup
wydarzeniem. MamJavaScript runtime error: '__doPostBack' is undefined
. Używam C # i ASP.NET 2.0.__doPostBack()
Metoda działa dobrze.Innym rozwiązaniem (bardzo hakerskim) jest po prostu dodanie niewidocznego przycisku ASP do znaczników i kliknięcie go metodą JavaScript.
Z JavaScript pobierz odwołanie do przycisku, używając jego ClientID, a następnie wywołaj na nim metodę .click () .
źródło
Biblioteki Microsoft AJAX będzie tego dokonać. Możesz również utworzyć własne rozwiązanie, które obejmuje użycie AJAX do wywoływania własnych plików skryptów aspx (w zasadzie) w celu uruchamiania funkcji .NET.
Proponuję bibliotekę Microsoft AJAX. Po zainstalowaniu i przywołaniu wystarczy dodać wiersz w ładowaniu lub inicjalizacji strony:
Następnie możesz wykonać następujące czynności:
Następnie możesz nazwać to na swojej stronie jako:
Ostatnim parametrem wywołania funkcji musi być funkcja zwrotna javascript, która zostanie wykonana po zwróceniu żądania AJAX.
źródło
Możesz to zrobić asynchronicznie za pomocą .NET Ajax PageMethods. Zobacz tutaj lub tutaj .
źródło
Myślę, że post na blogu Jak pobrać i pokazać dane bazy danych SQL Server na stronie ASP.NET przy użyciu Ajax (jQuery) pomoże ci.
Kod JavaScript
Funkcja po stronie serwera ASP.NET
źródło
Statyczne, silnie typowane programowanie zawsze wydawało mi się bardzo naturalne, więc na początku oparłem się nauce języka JavaScript (nie wspominając o HTML i CSS), kiedy musiałem tworzyć interfejsy internetowe dla moich aplikacji. Zrobiłbym wszystko, aby obejść ten problem, jak przekierowanie do strony tylko po to, aby wykonać i wykonać akcję na zdarzeniu OnLoad, o ile mógłbym zakodować czysty C #.
Przekonasz się jednak, że jeśli zamierzasz pracować z witrynami internetowymi, musisz mieć otwarty umysł i zacząć myśleć bardziej o sieci (to znaczy nie próbuj robić rzeczy po stronie klienta na serwerze i odwrotnie). . Uwielbiam formularze internetowe ASP.NET i nadal z nich korzystam (podobnie jak MVC ), ale powiem, że próbując uprościć sprawę i ukrywając oddzielenie klienta od serwera, może to zmylić nowicjuszy i czasami utrudniać sprawę .
Radzę nauczyć się podstaw JavaScript (jak rejestrować zdarzenia, pobierać obiekty DOM, manipulować CSS, itp.), A programowanie w sieci będzie dla ciebie o wiele przyjemniejsze (nie wspominając o łatwiejszym). Wiele osób wspomniało o różnych bibliotekach Ajax, ale nie widziałem żadnych rzeczywistych przykładów Ajax, więc oto one. (Jeśli nie jesteś zaznajomiony z Ajaxem, wystarczy, że wyślesz asynchroniczne żądanie HTTP w celu odświeżenia treści (lub może wykonać akcję po stronie serwera w twoim scenariuszu) bez ponownego ładowania całej strony lub pełnego ogłaszania zwrotnego.
Strona klienta:
Otóż to. Chociaż nazwa może wprowadzać w błąd, wynik może być również zapisany jako zwykły tekst lub JSON, nie jesteś ograniczony do XML. jQuery zapewnia jeszcze prostszy interfejs do wykonywania wywołań Ajax (między innymi w upraszczaniu innych zadań JavaScript).
Żądanie może być HTTP-POST lub HTTP-GET i nie musi dotyczyć strony internetowej, ale można wysłać do dowolnej usługi nasłuchującej żądań HTTP, takiej jak RESTful API. Interfejs API sieci Web ASP.NET MVC 4 sprawia, że skonfigurowanie usługi internetowej po stronie serwera do obsługi żądania również jest proste. Ale wiele osób nie wie, że można również dodawać kontrolery API do projektu formularzy internetowych i używać ich do obsługi takich wywołań Ajax.
Po stronie serwera:
Global.asax
Następnie po prostu zarejestruj trasę HTTP w pliku Global.asax, aby ASP.NET wiedział, jak skierować żądanie.
Dzięki AJAX i kontrolerom możesz w dowolnym momencie wysyłać z powrotem do serwera asynchronicznie, aby wykonać dowolną operację po stronie serwera. Ta podwójna wydajność zapewnia zarówno elastyczność języka JavaScript, jak i moc języka C # / ASP.NET, zapewniając użytkownikom odwiedzającym witrynę lepsze ogólne wrażenia. Bez poświęcania czegokolwiek zyskujesz to, co najlepsze z obu światów.
Bibliografia
źródło
To jest biblioteka o nazwie AjaxPro, która została napisana przez MVP o imieniu Michael Schwarz . Ta biblioteka nie została napisana przez firmę Microsoft.
Często używałem AjaxPro i jest to bardzo fajna biblioteka, którą poleciłbym do prostych wywołań zwrotnych na serwerze. Działa dobrze z wersją Ajax firmy Microsoft bez żadnych problemów. Jednak chciałbym zauważyć, że dzięki temu, jak łatwo Microsoft stworzył Ajax, użyłbym go tylko wtedy, gdy jest to naprawdę konieczne. Do wykonania naprawdę skomplikowanych funkcji, które można uzyskać od firmy Microsoft, potrzeba dużo JavaScript, po prostu wrzucając je do panelu aktualizacji.
źródło
Jest to tak łatwe dla obu scenariuszy (to znaczy synchronicznych / asynchronicznych), jeśli chcesz wyzwolić procedurę obsługi zdarzeń po stronie serwera, na przykład zdarzenie kliknięcia przycisku.
Aby wyzwolić procedurę obsługi zdarzeń kontrolki: Jeśli dodałeś już ScriptManager na swojej stronie, pomiń krok 1.
Dodaj następujące elementy w sekcji skryptu klienta strony
Napisz program obsługi zdarzeń po stronie serwera dla kontrolki
protected void btnSayHello_Click (nadawca obiektu, EventArgs e) {Label1.Text = "Witaj świecie ..."; }
Dodaj funkcję klienta, aby wywołać procedurę obsługi zdarzeń po stronie serwera
function SayHello () {__doPostBack ("btnSayHello", ""); }
Zastąp „btnSayHello” w powyższym kodzie identyfikatorem klienta kontrolki.
W ten sposób, jeśli twoja formant znajduje się w panelu aktualizacji, strona nie zostanie odświeżona. To takie proste.
Jeszcze jedna rzecz do powiedzenia to: Uważaj na identyfikator klienta, ponieważ zależy on od polityki generowania identyfikatorów zdefiniowanej we właściwości ClientIDMode.
źródło
Jeśli ktoś jest taki jak Merk i ma problem z tym, żeby to osiągnąć, mam rozwiązanie:
Gdy masz kontrolę użytkownika, wydaje się, że musisz również utworzyć PostBackEventHandler na stronie nadrzędnej. Następnie możesz wywołać PostBackEventHandler kontrolki użytkownika, wywołując ją bezpośrednio. Zobacz poniżej:
Gdzie UserControlID to identyfikator, któremu nadałeś kontrolę użytkownikowi na stronie nadrzędnej, gdy umieściłeś ją w znaczniku.
Uwaga: Możesz także po prostu wywołać bezpośrednio metody należące do tej kontrolki użytkownika (w takim przypadku potrzebujesz tylko modułu obsługi RaisePostBackEvent na stronie nadrzędnej):
źródło
Możesz chcieć utworzyć usługę internetową dla swoich typowych metod.
Po prostu dodaj WebMethodAttribute nad funkcjami, które chcesz wywołać, i to wszystko.
Posiadanie usługi sieciowej ze wszystkimi typowymi rzeczami również ułatwia utrzymanie systemu.
źródło
Jeśli funkcja __doPostBack nie jest generowana na stronie, musisz wstawić kontrolkę, aby wymusić ją w ten sposób:
źródło
Jeżeli chodzi o:
Powinien wyglądać tak:
Gdzie formID to identyfikator formantu ASP.NET w pliku .aspx.
źródło
Dodaj tę linię do ładowania strony, jeśli otrzymujesz oczekiwany błąd obiektu.
źródło
Możesz użyć
PageMethods.Your C# method Name
, aby uzyskać dostęp do metod C # lub metod VB.NET w JavaScript.źródło
Spróbuj tego:
Albo to
Użyj właściwości OnClientClick przycisku, aby wywołać funkcje JavaScript ...
źródło
Możesz go również uzyskać, dodając tę linię w kodzie JavaScript:
Myślę, że ten jest bardzo łatwy!
źródło
Spróbuj tego:
ddlVoucherType jest kontrolką, którą wywoła wybrana zmiana indeksu ... I możesz umieścić dowolną funkcję na wybranej zmianie indeksu tej kontrolki.
źródło
Najprostszym i najlepszym sposobem osiągnięcia tego jest użycie
onmouseup()
zdarzenia JavaScript zamiastonclick()
W ten sposób po kliknięciu uruchomisz JavaScript i nie będzie on kolidował ze
OnClick()
zdarzeniem ASP .źródło
Próbuję tego, aby móc uruchomić metodę Asp.Net podczas korzystania z jQuery.
Wykonaj przekierowanie strony w kodzie jQuery
Następnie użyj ciągu zapytania w ładowaniu strony
Nie ma więc potrzeby uruchamiania dodatkowego kodu
źródło
Ta odpowiedź działa jak bryza dla mnie dzięki cross browser:
Innym rozwiązaniem (bardzo hakerskim) jest po prostu dodanie niewidocznego przycisku ASP do znaczników i kliknięcie go metodą JavaScript.
Z JavaScript pobierz odwołanie do przycisku, używając jego ClientID, a następnie wywołaj na nim metodę .Click ():
źródło