protected override void PerformActionProcess(Controller controller)
{
object instance = null;
try
{
AssertIsPost(controller);
instance = binder.BindObject(Model.Type, Model.Type.Name, builder.BuildSourceNode(controller.Request.Form));
CommonOperationUtils.SaveInstance(instance, controller, errors, ref prop2Validation, false);
SessionScope.Current.Flush();
if (UseModelName)
{
controller.Redirect(controller.AreaName, controller.Name, "list" + Model.Type.Name);
}
else
{
controller.Redirect(controller.AreaName, controller.Name, "list");
}
}
catch(Exception ex)
{
errors.Add("Could not save " + Model.Type.Name + ". " + ex.Message);
}
if (errors.Count != 0)
{
controller.Context.Flash[Model.Type.Name] = instance;
controller.Context.Flash["errors"] = errors;
PropertyInfo keyProp = ObtainPKProperty();
IDictionary props = new Hashtable();
if (instance != null)
{
props[keyProp.Name] = keyProp.GetValue(instance, null);
}
if (UseModelName)
{
controller.Redirect(controller.AreaName, controller.Name, "edit" + Model.Type.Name, props);
}
else
{
controller.Redirect(controller.AreaName, controller.Name, "edit", props);
}
}
}