Soms is het echter beter om bepaalde acties te laten afhandelen door de browser: als geen connectie met de webserver moet gemaakt worden kunnen we enorme performantiewinst boeken.
ASP.Net Ajax biedt je heel wat mogelijkheden om client-side met controls te interageren.
Aan de kant van de server is het voor de ASP.Net-programmeur evident dat je de verschillende controls op de pagina, zelfs gelegen in een UpdatePanel, kan beïnvloeden.
Door een ScriptManager-control op een ASP.Net pagina te plaatsen, zorg je er voor dat de browser de nodige javascript-code ontvangt om met partiële postbacks te kunnen werken.
Dit betekent dat het ook client-side mogelijk is om de Ajax-controls aan te spreken.
De Microsoft Ajax Client side reference vindt je hier: http://msdn.microsoft.com/en-us/library/bb397536.aspx
| Event | Omschrijving |
|---|---|
| Sys.Application.init | Uitgevoerd wanneer alle scripts geladen zijn, maar voor een object werd aangemaakt. Dit event wordt één keer uitgevoerd wanneer de pagina opgemaakt wordt, opeenvolgende pagina-updates voeren dit event niet meer uit. |
| Sys.Application.load |
Uitgevoerd wanneer alle scripts geladen zijn, en de objecten gemaakt met $create zijn aangemaakt.
Het load-event wordt uitgevoerd voor alle (asynchrone) postbacks naar de server. De functie pageLoad voorziet automatisch in een handler voor dit event. Het load-event ontvangt een eventargs parameter, een Sys.ApplicationLoadEventArgs object. Je kan deze parameter gebruiken om te onderzoeken of de pagina werd vernieuwd door een partiële postback, en welke componenten sindsdien werden aangemaakt. |
| Sys.Application.unload | Uitgevoerd vooraleer de pagina-objecten vernietigd worden en het window.unload event van de browser plaatheeft.
Als ontwikkelaar kan je een functie pageUnload voorzien die dit event afhandelt. |
| Meer info en events bij MSDN: | http://msdn.microsoft.com/en-us/library/bb386417.aspx |
<asp:ScriptManager ID="ScriptManager1" runat="server"> <Scripts> <asp:ScriptReference Path="ClientScript.js" /> </Scripts> </asp:ScriptManager>
// voor intellisense in deze js-file /// <reference name="MicrosoftAjax.js"/> // meer info: http://blogs.msdn.com/b/webdevtools/archive/2007/11/06/jscript-intellisense-a-reference-for-the-reference-tag.aspx var app = Sys.Application; app.add_init(appInit); //Init-event van Application via eigen event-handler methode function appInit(sender) { alert('Application Init'); } //Load-event van Application met gereserveerde methode pageLoad opvangen //Kan ook op dezelfde manier als Init, dit is een kortere werkwijze function pageLoad(sender, args) { alert('Application Load'); }
protected void Page_Load(object sender, EventArgs e)
{
LblTijd.Text = System.DateTime.Now.ToString();
}
// voor intellisense in deze js-file /// <reference name="MicrosoftAjax.js"/> // meer info: http://blogs.msdn.com/b/webdevtools/archive/2007/11/06/jscript-intellisense-a-reference-for-the-reference-tag.aspx /// <reference name="MicrosoftAjaxWebForms.js" /> var app = Sys.Application; app.add_init(appInit); var pageManager = Sys.WebForms.PageRequestManager.getInstance(); pageManager.add_beginRequest(beginRequest); //Load-event van Application met gereserveerde methode pageLoad opvangen function pageLoad(sender, args) { alert('Application Load'); } function appInit(sender) { alert('Application Init'); } function beginRequest() { alert('begin request'); }
<div id="divBericht"></div>
var berichten = new Array("een eerste melding", "een tweede melding", "een derde melding");
var berichtnr = 0;
function pageLoad(sender, args) {
//alert('Application Load');
$get("divBericht").innerHTML = berichten[berichtnr];
if (++berichtnr == berichten.length) berichtnr = 0;
}
Let op: soms is het id dat voor een control wordt gegenereerd voor de browser niet hetzelfde als het Id dat je voor de control server-side hebt ingesteld (controls in Masterpages, user-controls, templates...). Dit kan je oplossen door server-side code te voorzien die gebruikt maakt van de property ClientId van de control, dit werkt wat minder gemakkelijk met externe .js-files... (just keep in mind voor het geval dat).
Meer info: blog van Matt Berseth
| Meer tutorials: |
| leer ook: | html | | xhtml | | css | | asp | | asp.net | | c# | | ado.net | | linq | | ajax | | java | | javascript |