private async Task <IActionResult> Edit(string viewName, bool partial, string formUrlSlug, string sectionUrlSlug) { var cts = TaskHelper.CreateChildCancellationTokenSource(ClientDisconnectedToken()); var formModel = await _dynamicFormsPresentationService.CreateFormModelFromDbAsync(formUrlSlug, sectionUrlSlug, cts.Token); if (formModel == null) { return(BadRequest()); } var formSubmissionId = _cookieService.Get(formUrlSlug); if (!(await _dynamicFormsPresentationService.IsValidSubmissionUrlAsync(formSubmissionId, formUrlSlug, sectionUrlSlug, ControllerName, cts.Token))) { return(BadRequest()); } if (string.IsNullOrEmpty(_cookieService.Get(formUrlSlug))) { formSubmissionId = Guid.NewGuid().ToString(); _cookieService.Set(formUrlSlug, formSubmissionId, 14); } else { if (sectionUrlSlug == null) { sectionUrlSlug = await _dynamicFormsPresentationService.GetFirstSectionUrlSlugAsync(formUrlSlug, ControllerName); } await _dynamicFormsPresentationService.PopulateFormModelFromDbAsync(formModel, formSubmissionId, sectionUrlSlug); } var formContainer = await _dynamicFormsPresentationService.CreateFormContainerAsync(formModel, 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)); } }
protected async Task <object> CreateModelAsync(ModelBindingContext bindingContext) { var formSlugResult = bindingContext.ValueProvider.GetValue(DynamicFormsValueProviderKeys.FormUrlSlug); var sectionSlugResult = bindingContext.ValueProvider.GetValue(DynamicFormsValueProviderKeys.SectionUrlSlug); if (formSlugResult == ValueProviderResult.None) { return(null); } var formSlug = formSlugResult.FirstValue; string sectionSlug = default(string); if (sectionSlugResult != ValueProviderResult.None) { sectionSlug = sectionSlugResult.FirstValue; } var model = await _dynamicFormsPresentationService.CreateFormModelFromDbAsync(formSlug, sectionSlug); var modelName = bindingContext.BinderModelName; if (string.IsNullOrEmpty(modelName)) { modelName = DynamicFormsValueProviderKeys.FormSubmissionId; } if (model != null) { string formSubmissionId = default(string); var formSubmissionIdResult = bindingContext.ValueProvider.GetValue(modelName); if (formSubmissionIdResult != ValueProviderResult.None) { formSubmissionId = formSubmissionIdResult.FirstValue; } await _dynamicFormsPresentationService.PopulateFormModelFromDbAsync(model, formSubmissionId, sectionSlug); } return(model); }