Just to reiterate what Tod was saying, the model binder needs a 'name' attribute on the HTML element to map the properties.
I was doing a quick test form by hand and only used the 'id' attribute to identify my elements.
Everything fell into place when I added the 'name' attribute.