65.9K
CodeProject is changing. Read more.
Home

Clean ASP.NET page initialization

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0 vote)

Jul 11, 2011

CPOL
viewsIcon

16125

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.

Clean ASP.NET page initialization - CodeProject