ASP.NET Custom Server Controls: Cute ASP.NET TextBox with Help Tips - Understanding the life cycle – Rendering methods
(Page 2 of 5 )
The default “Render” method (when not overridden by us) usually calls “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 already been defined within the “WebControl” class and I am about to override it. Usually, the “AddAttributesToRender” method gets initiated from within the “RenderBeginTag” method (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 YES 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 made it empty.
It doesn’t matter, even if you omit the above code fragment without writing, as it would do an unnecessary search for child controls and finally leave off. Including the above is a professional way to let the 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()
End Sub
The above method simply contains a 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