private async Task <IActionResult> Update(string viewName, bool partial, List <DynamicForm> formModels) { var formUrlSlug = this.RouteData.Values[DynamicFormsValueProviderKeys.FormUrlSlug].ToString(); var sectionUrlSlug = this.RouteData.Values[DynamicFormsValueProviderKeys.SectionUrlSlug].ToString(); //dto.Id = id; var cts = TaskHelper.CreateChildCancellationTokenSource(ClientDisconnectedToken()); var formSubmissionId = _cookieService.Get(formUrlSlug); if (!(await _dynamicFormsPresentationService.IsValidSubmissionUrlAsync(formSubmissionId, formUrlSlug, sectionUrlSlug, ControllerName, cts.Token))) { return(BadRequest()); } var isValid = ModelState.IsValid; await _dynamicFormsPresentationService.SaveFormModelToDbAsync(formModels.First(), formSubmissionId, formUrlSlug, sectionUrlSlug, isValid, cts.Token); if (isValid) { var nextSectionUrlSlug = await _dynamicFormsPresentationService.GetNextSectionUrlSlugAsync(formSubmissionId, formUrlSlug, sectionUrlSlug, ControllerName); if (!string.IsNullOrWhiteSpace(nextSectionUrlSlug)) { if (partial) { return(Redirect(Html.Url().Action <DynamicFormsController>(c => c.EditAjax(formUrlSlug, nextSectionUrlSlug)).Replace("%2F", "/"))); } else { return(Redirect(Html.Url().Action <DynamicFormsController>(c => c.Edit(formUrlSlug, nextSectionUrlSlug)).Replace("%2F", "/"))); } } else { if (partial) { return(RedirectToAction <DynamicFormsController>(c => c.SummaryAjax(formUrlSlug))); } else { return(RedirectToAction <DynamicFormsController>(c => c.Summary(formUrlSlug))); } } } var formContainer = await _dynamicFormsPresentationService.CreateFormContainerAsync(formModels.First(), formUrlSlug, sectionUrlSlug, formSubmissionId, ControllerName, cts.Token); ViewBag.DetailsMode = false; ViewBag.PageTitle = Title; ViewBag.Admin = false; if (partial) { return(PartialView(viewName, formContainer)); } else { return(View(viewName, formContainer)); } }