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));
            }
        }
示例#2
0
        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);
        }