History of the Sliding Doors Method and the HTML Button Element
About a year ago, the button element was rediscovered by Particletree as way to add consistency to your website's buttons. A few months later the filament group took the button element a step farther with sliding doors. We really liked both of these articles and wanted to use them in our latest projects but we ran into a problem with the rendering of the asp:button control.

The Problem with Standard asp:Button and Form Input Controls
A basic asp:button control renders as an input element with type="submit" (<input type="submit" name="btnAddChoice" value="Submit" onclick="__doPostBack('btnAddChoice','');" />). In order to render our asp:Buttons in more flexible, skinnable way with sliding doors,we needed to alter the HTML output of the asp:Button control to render like this: <button type="submit" id="btnAddChoice" onclick="__doPostBack('btnAddChoice','');"><span>Submit</span></button>.
For more info on the benfits of sliding doors and the HTML button, please read the following articles:
The Solution
We decided to write a Control Adapter to change the rendering of the asp:button to render as a button element. A Control Adapter allows you to override the rendering of any ASP.NET server control. The best part about using a control adapter is that it will render every asp:button the way that we tell it to; we don't have to rewrite any of our old asp:buttons. For more info on control adapters check out this post on Scott Gu's blog.