ASP.NET's Page infrastructure is set up so that each page is broken down into smaller components (server-side controls) that are responsible for rendering a small amount of HTML into the page's output stream. After reading this chapter, you probably have a good idea as to how some of the standard ASP.NET controls work. Button controls render an input tag with a type of “submit.” TextBox controls render an input tag with a type of “text.” You can actually see how each of the controls in a page renders by viewing the HTML that comes back to the browser.
Of course, because ASP.NET's Page infrastructure is set up this way, it leaves the door open for custom User controls. In this chapter we looked at rendered custom controls. Custom controls that render have the ability to squirt anything they want into the output bound for the browser. Custom rendered controls usually manage a set of properties, fire events to their hosts, and render snapshots of themselves to their hosts. In this chapter we built a palindrome checker as an example. Next, we'll see examples of the other kind of custom control—composite-style controls.