ASP.NET MVC is capable of Model Binding complex objects and it's quite good at it. An easy way to do this is to name your view fields that same as the properties for your object. That way in your action method that the form posts to you only need the complex object as a parameter. Example:
<% using(Html.BeginForm()) { %>
<%= Html.TextBox("Property1") %>
<%= Html.TextBox("Property2") %>
<%= Html.TextBox("Property3") %>
<%= Html.TextBox("Property4") %>
<%= Html.CheckBox("PropertyBool") %>
<%= Html.TextBox("Property5") %>
<% } %>
Which posts to an action method like so:
public ActionResult Index(ComplexObject complexoObject)
{
}
That's a fairly simple example as you could have different form controls in the view for corresponding properties of the object. If your object is very complex you could always write your own model binder for it and over-ride the default model binder.