ASP.NET Custom Server Controls: Cute ASP.NET TextBox Control Continued - Understanding the life cycle – Rendering methods
(Page 2 of 5 )
The default “Render” method (when not overridden by us) usually calls the “RenderBeginTag” before calling any other methods. The “RenderBeginTag” method in my control has been implemented something like this:
Public Overrides Sub RenderBeginTag(ByVal writer As System.Web.UI.HtmlTextWriter)
AddAttributesToRender(writer)
writer.RenderBeginTag(HtmlTextWriterTag.Input)
End Sub
Within the above method, I am trying to call the “AddAttributesToRender(Writer)” statement to add any attributes to my textbox control (the INPUT tag). In fact, it is not a user defined method; it has been already defined within the “WebControl” class, and I am about to override it. Usually, the “AddAttributesToRender” method gets initiated from within the “RenderBeginTag” method (that too as the first statement). I hope you can understand the second statement, which actually renders only an INPUT tag (with all the attributes emitted by “AddAttributesToRender” method).
Coming to the next code fragment, I have an empty method as follows:
Protected Overrides Sub RenderContents(ByVal writer As System.Web.UI.HtmlTextWriter)
End Sub
The above method does nothing. Then is it necessary to include it? Maybe, and maybe not. If we don’t include an empty “RenderContents” method, it will try to search for child controls within our textbox control and try to render them by calling “base.Render(writer)” internally. In this case, we don’t have any child controls. So, I don’t need the default implementation (which actually calls the base class related “render” method to render all child controls). So, I override that method and make it empty.
It doesn’t matter; even if you omit the above code fragment, it would do an unnecessary search for child controls and finally leave off. Including the above fragment is a professional way to let others know about the life cycle.
Going further we have the following:
Public Overrides Sub RenderEndTag(ByVal writer As System.Web.UI.HtmlTextWriter)
writer.RenderEndTag()
EndSub
The above method simply contains the statement “writer.RenderEndTag”. We already opened a beginning tag using “writer.RenderBeginTag(…)” within the “RenderBeginTag” method. We didn’t close it anywhere. And we do that using the above method. You need not even specify which tag to close. It could automatically understand (from our proper HTML hierarchy) which tag to close. That’s the beauty of ASP.NET custom control development.
Next: Understanding the life cycle – Attributes >>
More ASP.NET Articles
More By Jagadish Chaterjee