Vă mulțumim pentru susținere

Apelați funcția ASP.NET din JavaScript?

Scriu o pagină web în ASP.NET. Am un cod JavaScript și am un buton de trimitere cu un eveniment de clic.

Este posibil să apelați o metodă pe care am creat-o în ASP cu evenimentul de clic JavaScript?

0
adăugat editat
Vizualizări: 1
Ar trebui să folosiți o anumită bibliotecă Ajax, cum ar fi: Imnul
adăugat autor jdecuyper

6 răspunsuri

biblioteca Microsoft AJAX va realiza acest lucru. Puteți crea, de asemenea, propria soluție care implică utilizarea AJAX pentru a apela propriile fișiere script aspx (ca practic) pentru a rula funcțiile .NET.

Vă sugerez biblioteca Microsoft AJAX. Odată instalat și referit, trebuie doar să adăugați o linie în încărcarea paginii sau init:

Ajax.Utility.RegisterTypeForAjax(GetType(YOURPAGECLASSNAME))

Apoi puteți face lucruri precum:

 _
Public Function Get5() AS Integer
    Return 5
End Function

Apoi, puteți să-l numiți pe pagina dvs. ca:

PageClassName.Get5(javascriptCallbackFunction);

Ultimul parametru al apelului pentru funcții trebuie să fie funcția de apel invers JavaScript care va fi executată atunci când cererea AJAX este returnată.

0
adăugat

Ei bine, daca nu vrei sa o faci folosind Ajax sau alt mod si vrei doar sa se intample un postback normal ASP.NET, iata cum o faci (fara a folosi alte biblioteci):

Este puțin complicat deși ...:)

i. În fișierul dvs. de cod (presupunând că utilizați C# și .NET 2.0 sau o versiune ulterioară) adăugați următoarea Interfață la clasa dvs. de pagină pentru a face să arate ca

public partial class Default : System.Web.UI.Page, IPostBackEventHandler{}

ii. Aceasta ar trebui să adauge această funcție (utilizând Tab - Tab ) în fișierul de cod:

public void RaisePostBackEvent(string eventArgument) { }

iii. În evenimentul onclick în JavaScript, scrieți următorul cod:

var pageId = '<%=  Page.ClientID %>';
__doPostBack(pageId, argumentString);

Aceasta va numi metoda "RaisePostBackEvent" în fișierul dvs. de cod cu "eventArgument" ca "argumentString" pe care ați trecut-o din JavaScript. Acum, puteți apela orice alt eveniment doriți.

P.S: Aceasta este 'under-sub-bottom-up-doPostBack' ... Și nu ar trebui să existe spațiu în acea secvență ... Cumva, WMD nu îmi permite să scriu în sublinieri urmate de un personaj!

0
adăugat
Încerc să pun în aplicare acest lucru, dar nu funcționează bine. Pagina este postată înapoi, dar codul meu nu este executat. Când depanez pagina, RaisePostBackEvent nu va mai fi dat afară. Un lucru pe care l-am făcut în mod diferit este că fac acest lucru într-un control de utilizator în loc de o pagină aspx.
adăugat autor merk
îmi dă o eroare spune că se așteaptă un obiect. Am numit-o astfel: window.onbeforeunload = confirmExit; // debugger; funcția confirmExit() {var pageId = '<% = Page.ClientID%>'; var argumentString = 'ReleaseLock'; __doPostBack (pageId, argumentString); }
adăugat autor Pavitar
Din orice motiv, nu am reușit să lucrez cu evenimentul onkeyup . A apărut o eroare de execuție JavaScript: "__doPostBack" este nedefinită . Folosesc C# și ASP.NET 2.0.
adăugat autor Andrew T.

Puteți face acest lucru asincron folosind .NET Ajax PageMethods. Consultați aici sau aici .

0
adăugat

S-ar putea să doriți să creați un serviciu web pentru metodele dvs. comune Doar adăugați un WebMethodAttribute peste funcțiile pe care doriți să le apelați, și asta e vorba Având un serviciu web cu toate lucrurile obișnuite face de asemenea sistemul mai ușor de întreținut.

0
adăugat

Biblioteca Microsoft AJAX va realiza acest lucru. Puteți crea, de asemenea, propria soluție care implică utilizarea AJAX pentru a apela propriile fișiere script aspx (ca practic) pentru a rula funcțiile .NET.

Aceasta este biblioteca numită AjaxPro care a scris un MVP numit Michael Schwarz . Aceasta a fost biblioteca nu a fost scrisă de Microsoft.

Am folosit extensiv AjaxPro și este o bibliotecă foarte frumoasă, pe care aș recomanda pentru apeluri simple la server. Funcționează bine cu versiunea Microsoft de Ajax fără probleme. Cu toate acestea, mi-ar lua notă, cu cât de ușor Microsoft a făcut Ajax, aș folosi doar dacă este cu adevărat necesar. Este nevoie de o mulțime de JavaScript pentru a face niște funcționalități foarte complicate pe care le obțineți de la Microsoft prin plasarea într-un panou de actualizare.

0
adăugat
Doresc ca acest post să fi fost mai aproape de cel de mai sus ... Am explodat câteva minute încercând să-mi dau seama de ce această metodă nu a fost menționată în documentația MS:
adăugat autor Dave Swersky

Metoda __ doPostBack() funcționează bine.

O altă soluție (foarte hackish) este să adăugați pur și simplu un buton ASP invizibil în marcajul dvs. și să faceți clic pe el printr-o metodă JavaScript.

<div style="display: none;">
   
</div>

Din JavaScript, extrageți referința la buton utilizând ClientID și apoi apelați metoda .click() pe ea.

var button = document.getElementById(/* button client id */);

button.click();
0
adăugat
ce dacă vreau să folosesc un argument? pot să-l ia de la partea clientului și să-l utilizați cu butonul.Click ()?
adăugat autor Kubi
te rog să te uiți aici? stackoverflow.com/questions/2536106/…
adăugat autor Kubi
nu există metoda Click?
adăugat autor Saher Ahwal
Eroare de execuție JavaScript: Obiectul nu acceptă proprietatea sau metoda 'getElementByID' oh mby go pentru Id: D ffs crap casesensistive
adăugat autor Ms. Nobody
@mbillard Am petrecut o mulțime de timp în căutarea unei modalități de ascundere (o componentă vizuală) și mai târziu am căutat cum să numesc o funcție asp din javascript.
adăugat autor Erick Asto Oblitas
@ Kubi un argument pe partea de server? Ceea ce fac, de obicei, este serializarea argumentelor care trebuie trimise către server și plasarea acestora într-un câmp ascuns.
adăugat autor mbillard
adăugat autor mbillard