Próbuję utworzyć asynchroniczne ogłaszanie zwrotne w ASP.NET przy użyciu __doPostBack()
, ale nie mam pojęcia, jak to zrobić. Chcę używać waniliowego JavaScript.
Coś prostego, jak kliknięcie przycisku, może spowodować uruchomienie __doPostBack()
zdarzenia. Próbuję się tylko dowiedzieć, jak działa mechanizm.
c#
javascript
asp.net
postback
Michael Kerute
źródło
źródło
__doPostBack
nie jest w rzeczywistości obsługiwane. Jeśli na Twojej stronie nie ma nic, co wyzwala ogłaszanie zwrotne, strona asp.net może pominąć definiowanie__doPostBack
funkcji. Obsługiwanym podejściem jest wywołanieClientScriptManager.GetPostBackEventReference
, które zwraca ciąg znaków w formularzu__doPostBack(...)
i zapewnia, że__doPostBack
jest on zdefiniowany.Odpowiedzi:
Możesz to wypróbować w swoim formularzu internetowym za pomocą przycisku o nazwie btnSave, na przykład:
A w swoim kodzie z tyłu dodaj coś takiego, aby odczytać wartość i operować na niej:
Spróbuj i daj nam znać, czy to zadziałało.
źródło
Jest to również dobry sposób na uzyskanie kontroli po stronie serwera w celu ogłaszania zwrotnego w oknie dialogowym FancyBox i / lub jQuery . Na przykład w FancyBox-div:
JavaScript:
Ładowanie strony po stronie serwera:
źródło
ClientIDMode="Static"
atrybutMyButton
, aby ASP nie zmieniał identyfikatora przycisku.Oto krótki poradnik, jak to
__doPostBack()
działa.Szczerze mówiąc, nie używam go zbyt często; przynajmniej bezpośrednio. Wiele formantów serwera (np,
Button
,LinkButton
,ImageButton
, częściGridView
, itp) używania__doPostBack
jako ich postu mechanizmu powrotem.źródło
Chciałbym tylko dodać coś do tego posta dla
asp:button
. Wypróbowałem clientId i wydaje mi się, że nie działa:Jednak pobranie UniqueId wydaje się być wysyłane z powrotem na serwer, jak poniżej:
Może to pomóc komuś innemu w przyszłości, dlatego opublikowanie tego.
źródło
ClientID
, ponieważ używałemClientIDMode = Static
. KorzystanieUniqueID
zadziałało.Stare pytanie, ale chciałbym coś dodać: dzwoniąc
doPostBack()
możesz użyć metody obsługi serwera dla akcji.Dla przykładu:
Zapali się na serwerze:
Nie znalazłem lepszego sposobu, aby uzyskać argument, więc nadal używam
Request["__EVENTARGUMENT"]
.źródło
Jak powiedzieli inni, musisz podać UniqueID kontrolki do metody __doPostback ().
Na serwerze przesłane wartości formularza są identyfikowane przez atrybut nazwy pól na stronie.
Powodem, dla którego UniqueID działa, jest to, że UniqueID i nazwa są w rzeczywistości tym samym, gdy formant serwera jest renderowany w HTML.
Oto artykuł opisujący, czym jest UniqueID:
źródło
Tak to robię
źródło