2009-04-15 23 views
15

Mam przycisk ASP.NET, ale ostatnio zastąpiłem go standardowym przyciskiem HTML ... To, co muszę zrobić, to odświeżenie strony ASP.NET i zapewnić wywołanie metody.Odświeżenie ASP.NET za pomocą jQuery?

Poprzedniego przycisk był przycisk ASP.NET, więc musiałem to wydarzenie:

Protected Sub btnCancelar_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
    UtilTMP.DisposeObjects() 
    Server.Transfer("~\Forms\test.aspx", True) 
End 

Ale byłem za pomocą przycisku z JavaScript ALERT i ja niedawno zmienił się w oknie dialogowym jQuery UI Modal, ale to nie robi "Poczekaj na mnie, aby odpowiedzieć na pytanie .. oddzwonienie dzieje się natychmiast ... więc zdecydowałem się zmienić na standardowy przycisk HTML ... ale muszę oddzwonić do strony ASP.NET i wywołać metodę jak.

Gdybym tylko ogłaszanie nie będzie wywoływać oczyszczanie

Protected Sub Cleanup() 
    UtilTMP.DisposeObjects() 
    Server.Transfer("~\Forms\test.aspx", True) 
End 
+0

Jeśli natknąłeś się na to z Google, sprawdź moją odpowiedź. (Żadna z opublikowanych prac nie działała dla mnie). –

Odpowiedz

6

Mimo że możesz robić posty zwrotne w JQuery, może lepiej zadzwonić do nas Metoda b (usługa internetowa na twojej stronie). Połączenie może być również szybsze, ponieważ nie publikujesz całej strony ViewState.

+4

To zadziała, ale jest sposób na to, dzięki postbackom, więc nie musisz zadeklarować metody usługi sieciowej. –

+0

FWIW, Chrome wyświetla ostrzeżenie o złośliwym oprogramowaniu pod tym adresem URL – dlchambers

+0

Link już nie działa. Chrome mnie nie pokonał, ponieważ witryna zawiera prawdopodobnie złośliwe oprogramowanie. – Ortund

4

Musisz ustawić ukryte pole __EVENTTARGET do odpowiedniej wartości, jeśli chcesz wyzwolić obsługi zdarzeń na odświeżenie strony. Zrobiłbym to jednak w inny sposób. Umieść przyciski ASP w swoim modalnym oknie dialogowym, do którego przypisano obsługę zdarzeń. Niech program obsługi kliknięć, który wyskoczy w oknie, zwróci wartość false (tak, aby oddzwonienie nie nastąpiło po kliknięciu tego przycisku). W ten sposób formularz jest odsyłany z powrotem z przycisku ASP, a moduł obsługi, w tym ustawienie ukrytego pola po stronie klienta, jest wywoływany automatycznie.

0

Powinieneś być w stanie przerwać odświeżanie wszystkiego, co JS jest dołączone do zdarzenia onclick przycisku, niezależnie od tego, czy jest to WebControl, czy standardowy przycisk HTML, zwracając wartość false.

E.g. <input type="image" id="test" onclick="doWhatever();return false;" />

15

Sprawdź, czy to pomaga: http://www.codeproject.com/KB/aspnet/sample.aspx.

Zasadniczo, można zadeklarować atrapę znacznika zakotwiczenia:

<a id="anchorId" runat="server" onclick="return true" onserverclick="foo"></a> 

W kodzie tyłu, trzeba zadeklarować metodę foo:

protected void foo(object sender, EventArgs e) 
{ 
    // Do something here 
} 

Następnie można wywołać funkcji onclick tej kotwicy jest z tego javascript:

document.getElementById('anchorId').click() 
+0

Albo to jest inna opcja: http://blogs.microsoft.co.il/blogs/gilf/archive/2008/10/04/asp-net-ajax-pagemethods.aspx – David

0

Natknąłem się na ten post przez google, więc podejrzewam, że inni też. Próbowałem tutaj metod, które nie działały dla mnie. Wyjaśnię moje rozwiązanie, ale najpierw omówię to, co próbuję zrobić.
Mam formularz, który używa jQuery ajax do publikowania danych w moim serwisie internetowym, co z kolei aktualizuje moją bazę danych.Mam formularz przesyłania obrazów, ze względów bezpieczeństwa nie można uzyskać pełnej ścieżki do pliku w wywołaniu ajax, aby przekazać ją do usługi sieciowej ... więc należy to zrobić za pomocą zwykłego odświeżenia asp.net. Tak więc moim dylematem jest to, jak zrobić jedno i drugie. To, co zrobiłem, to moja funkcja ajax, która aktualizuje bazę danych, gdy tylko odniosę sukces z usługi sieciowej, powiadamam formularz, aby oddzwonił do pewnej metody w kodzie źródłowym, a następnie przekierował do dowolnego miejsca. $("#Button1").click(function() { javascript: __doPostBack('ctl00$ContentPlaceHolder1$atest', '') });

Jest to zasadniczo to samo, co przypisanie funkcji kliknięcia do formantu asp.net, z wyjątkiem kliknięcia przycisku Mówię javascript, aby go wykonać. atest będzie identyfikatorem przypisanym do kontrolki asp.net. Uwaga: <%=myclientid.ClientID %> nie będzie tutaj działać.

+1

<% = myclientid.ClientID%> nie działa, ale <% = myclientid.UniqueID%> robi. –

Powiązane problemy