Clean ASP.NET page initialization





0/5 (0 vote)
Initialize Master Page, Page, and Controls in a single JavaScript call.
Here is a clean way to initialize all the JavaScript in your ASP.NET page. It is accomplished using a custom initializer class. This example uses jQuery.
In the master page itself or in a .js class referenced in your master page, declare your class:
//Initializer class
function Initializer() {
//A simple array of functions
this.functionArray = new Array();
}
//The method to insert functions to the initialization stack
Initializer.prototype.addStep = function (func) {
this.functionArray.push(func);
}
//The initializing method
Initializer.prototype.init = function () {
for (x in this.functionArray) {
this.functionArray[x]();
}
}
The init()
method loops through the function array and executes each method.
Add this block to the master page:
<script type='text/javascript'>
//Create instance of the initializer
var initializer = new Initializer();
//JQuery's 'onready' function
$(document).ready(function () {
initializer.init();
});
</script>
In your user controls and/or pages, add your initialization code:
//Method called by Page_Load
private void CreateInitScript()
{
string script = "function doSomething() {
//Perform some actions
}";
ClientScriptManager cs = Page.ClientScript;
//Insert your script into the page
cs.RegisterClientScriptBlock(this.GetType(), "MyScript", script, true);
//Add a call to your method to the validation stack
string validationScript = "if(initializer){ initializer.addStep(doSomething); }";
cs.RegisterStartupScript(this.GetType(), "initscript", validationScript, true);
}
This code is very handy when you want to handle your control's initialization at the same time as the hosting page and the master page if you use one.