Ciao, si può fare tutto con un unico css, ma il valore da dare a "height" per explorer non è zero ma 100%.
Sul css, fermo restando il 100% al body e all'html, devi impostare questi valori per il container (questo è un esempio di container largo 800px centrato orizzontalmente):
#container {
width: 800px;
margin-right: auto;
margin-left: auto;
min-height: 100%;
}

html {
height: 100%
}

Io utilizzo spesso la tecnica del footer che rimane sempre a fondo pagina e ultimamente integro tutto così (sempre 100% html e body, con footer alto 50px)

width: 800px;
margin-right: auto;
margin-left: auto;
min-height: 100%;
height: auto !important; /per gli altri browser/
height: 100%; /per IE 6/
margin-bottom: -50px;
}
#footer {
width: 800px;
height: 50px;
margin-right: auto;
margin-left: auto;
}

e queste due classi prima della chiusura del container

.clear {
line-height: 1px;
clear: both;
}
.push {
height: 50px;
line-height: 50px;
}

IMPORTANTE: il footer deve stare fuori dal container.