Exemple #1
0
        private static IReadOnlyList <FormSection> RetrieveFormSections(Type formType)
        {
            var properties = formType.GetProperties().Where(p => Attribute.IsDefined(p, typeof(DataTypeAttribute))).ToList();
            var sections   = properties.GroupBy(p => p.GetCustomAttribute <Forms.SectionAttribute>()?.Name).ToList();

            var formSections = sections?.Select(section =>
            {
                var formSection = new FormSection(section?.Key ?? string.Empty, section?.Select(p =>
                {
                    var formProperty     = new FormProperty(p);
                    var triggerAttribute = p.GetCustomAttributes().OfType <Forms.IAmConditionalTriggerAware>()?.FirstOrDefault();

                    if (triggerAttribute?.ConditionalTrigger != null)
                    {
                        formProperty.SetConditionalTrigger(triggerAttribute.ConditionalTrigger);
                    }

                    var triggerTargetAttribute = p.GetCustomAttribute <Forms.ConditionalTargetAttribute>();

                    if (triggerTargetAttribute != null)
                    {
                        formProperty.SetConditionalTriggerTarget(triggerTargetAttribute.TriggerKey);
                    }

                    return(formProperty);
                }) ?? Enumerable.Empty <FormProperty>());

                return(formSection);
            });

            return(formSections.ToList() ?? Enumerable.Empty <FormSection>().ToList());
        }
 public static async Task <IHtmlContent> FormSectionAsync(this IHtmlHelper htmlHelper, FormSection formSection)
 {
     htmlHelper.ViewData.SetCurrentFormSection(formSection);
     return(await htmlHelper.PartialAsync("Forms__Form_Body_Section"));
 }
Exemple #3
0
 public static void SetCurrentFormSection(this ViewDataDictionary viewData, FormSection formSection)
 {
     viewData[CurrentSectionKey] = formSection;
 }