You just need to use the correct naming conventions for the model binder to understand.
Property.Property
Or
Property[index].Property for Collections
If index isn't sequential 0 based you need to add a hidden field, Property.Index with the value of the index
Example:
<input name="Employee.Name" value="1234 5678"/>
<input name="Employee.Phone value="1234 5678"/>
<input name="Employee.Email" value="[email protected]"/>
<input name="Addresses.Index" value="0" type="hidden"/>
<input name="Addresses[0].Suburb" value="Melbourne"/>
<input name="Addresses[0].Postcode" value="3000"/>
<input name="Addresses.Index" value="1" type="hidden"/>
<input name="Addresses[1].Suburb" value="Sydney"/>
<input name="Addresses[1].Postcode" value="2000"/>
When your inserting a row, just use the naming convention, and don't forget to add the .Index field.
Most the default EditorFor will handle all of this for you transparently if you create a custom EditorTemplate for your Address class.