public virtual JsonResult NextWizardStep(/*[ModelBinder(typeof(WizardModelBinder))]*/ [Deserialize] WizardViewModel model, FormCollection form) { var state = ViewModelSessionState; model.SetStepIndex(state != null ? state.StepIndex : 0); RemoveValidationRulesFromOtherSteps(model); if (Validate(ModelState, model)) { model.Errors = null; model.NextStep(); try { ProcessToNext(model); } catch (ValidationException valEx) { // Catch custom exceptions so decrease the stepindex model.PreviousStep(); // Return the errors to the client model.Errors = new List <WizardValidationResult>(); model.Errors.Add(new WizardValidationResult { MemberName = string.Empty, Message = valEx.ValidationResult.ErrorMessage }); } } ViewModelSessionState = model; return(Json(model.StepIndex)); }