You can use an attribute which I found on the net which handles multiple buttons on the same form. This will determine which action is executed on the controller. So, you could have 4 actions on the controller and the correct one is executed depending on which button was clicked irrespective of where it's called.
So little example; markup ...
<input type="submit" name="action" value="step1"/>
<input type="submit" name="action" value="step2"/>
<input type="submit" name="action" value="step3"/>
<input type="submit" name="action" value="step4"/>
Then in the controller ...
[HttpPost]
[MultiButton(MatchFormKey = "action", MatchFormValue = "step1")]
public ActionResult Step1(/* parameters */) { ... }
[HttpPost]
[MultiButton(MatchFormKey = "action", MatchFormValue = "step2")]
public ActionResult Step2(/* parameters */) { ... }
[HttpPost]
[MultiButton(MatchFormKey = "action", MatchFormValue = "step3")]
public ActionResult Step3(/* parameters */) { ... }
[HttpPost]
[MultiButton(MatchFormKey = "action", MatchFormValue = "step4")]
public ActionResult Step4(/* parameters */) { ... }
You can then click between any step in the sign up process (probably once validation is done and you've gone through each first) with relative ease.
Hope this helps someone. I've just clocked the question post date but thought I'd post this anyway :-)