ASP.NET Custom Server Controls: WordHack Control - Is it getting rendered onto the page?
(Page 3 of 5 )
It does not directly render, because there exists no separate HTML tag for that. But, indirectly it does render with some sample JavaScript. In my previous examples, I used to define “RenderBeginTag”, “Render”, “RenderEndTag” and several other methods of rendering. In this scenario, as the control would never be displayed on the web page (at runtime), there exists no use for certain methods.
Finally, I came up overriding only two methods from the base class “webcontrol”. They are as follows:
- AddAttributesToRender
- Render
Even though it is not essential to use the “AddAttributesToRender” method in this case, I just used it to separate the registration of JavaScript code from the “Render” method (of course even “Render” is also not necessary, just used for clarity). Their definitions would be something like the following:
Protected Overrides Sub AddAttributesToRender(ByVal writer As
System.Web.UI.HtmlTextWriter)
MyBase.AddAttributesToRender(writer)
'emit javascript only at run-time
If Not IsDesignTime Then
'mouse events
If Not Page.IsStartupScriptRegistered("WordHack") Then
Page.RegisterStartupScript("WordHack", getJS4WordHack())
End If
End If
End Sub
Within the above method, I am trying to call the “MyBase.AddAttributesToRender(Writer)” statement to add any design-time attributes to my control. It is not essential for this control in this scenario, but it is a must when we design interactive controls (as explained in my previous articles of the same series).
And you can even observe that I am using the “IsDesignTime” method here. I would like to emit JavaScript code out, if and only if, it is not design time in Visual Studio.NET. I think you can understand the rest. It just involves emitting JavaScript contained in “getJS4WordHack” (which we will see in later sections). Coming to the “Render” method, it is defined as follows:
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
AddAttributesToRender(writer)
End Sub
The above method gets executed immediately when the control has to render itself. The only statement I used is the “AddAttributesToRender” statement. This statement calls the above method which actually renders (sends out) only the JavaScript. Not even a single HTML tag gets emitted out of this control (apart from JavaScript) to the client.
Next: JavaScripts: the heart of WordHack >>
More ASP.NET Articles
More By Jagadish Chaterjee