DOCTYPE and Table Height

I’ve been pulling out my hair for the last 30 minutes trying to get an HTML table with height 100% to work in my ASP.NET 2.0 application.  I’m trying to render a block of HTML in the center of my application page.

I finally found the solution to my problem – it seems that turning on XHTML compliance with the DOCTYPE declarator breaks the table height attribute – ASP.NET 2.0 is XHTML compliant out of the box, and since the height attribute is no longer supported in this manner, my page broke.

This article helps to clarify…. http://www.apptools.com/examples/tableheight.php

The article suggests, applying the following style to the page, and declaring a top level table with id “wrapper” containing a single column and row – align center and valign middle – to obtain desired center page behavior.

<style type="text/css">
    html, body, #wrapper
    {
        height:90%;
        margin: 0;
        padding: 0;
        border: none;
        text-align: center;
    }
    form
    {
        margin: 0;
        padding: 0;
    }
    #wrapper
    {
        margin: 0 auto;
        text-align: left;
        vertical-align: middle;
        width: 400px;
    }
</style>

<table id="wrapper" cellpadding="0" cellspacing="0">
    <tr>
        <td align="center" valign="middle">
            <form id="mainForm" runat="server">
                <asp:PlaceHolder ID="CONTENT" runat="server"></asp:PlaceHolder>
            </form>
        </td>
    </tr>
</table>

Sadly, placing the wrapper table inside the form tags breaks the behavior, so I applied centering to the entire page contents, form tags and all.  This works for my current situation, but isn’t ideal.