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));
            }
        }