public static async Task <RedirectResult> SaveAndRedirectAsync <TModel, TIdentity, TUser>( this DapperCX <TIdentity, TUser> crudService, TModel model, Func <TModel, Exception, RedirectResult> redirect, ChangeTracker <TModel> changeTracker = null, Action <TModel> beforeSave = null, Func <TModel, Task> onSuccess = null, Action <TModel, Exception> onException = null) where TUser : IUserBase { beforeSave?.Invoke(model); try { var result = await crudService.SaveAsync(model, changeTracker); onSuccess?.Invoke(model); return(redirect.Invoke(model, null)); } catch (Exception exc) { onException?.Invoke(model, exc); return(redirect.Invoke(model, exc)); } }