private string GetPartialViewName(ScienceCategorySectionBaseSchema schema)
        {
            switch (schema.DocumentTypeAlias)
            {
            case ScienceCategorySectionRichTextSchema.ModelTypeAlias:
            case ScienceCategorySubSectionRichTextSchema.ModelTypeAlias:
                return(ScienceCategoryPartialViewNames.RichText);

            case ScienceCategorySubSectionImageGallerySchema.ModelTypeAlias:
            case ScienceCategorySectionImageGallerySchema.ModelTypeAlias:
                return(ScienceCategoryPartialViewNames.ImageGallery);

            case ScienceCategoryIndividualSectionImageTextSchema.ModelTypeAlias:
            case ScienceCategorySectionImageTextSchema.ModelTypeAlias:
            case ScienceCategorySubSectionImageRichTextSchema.ModelTypeAlias:
                return(ScienceCategoryPartialViewNames.ImageRichText);

            case ScienceCategoryIndividualSectionImageCodeSchema.ModelTypeAlias:
            case ScienceCategorySectionImageCodeSchema.ModelTypeAlias:
            case ScienceCategorySubSectionImageCodeSchema.ModelTypeAlias:
                return(ScienceCategoryPartialViewNames.ImageCode);

            case ScienceCategorySectionSliderSchema.ModelTypeAlias:
            case ScienceCategorySubSectionSliderSchema.ModelTypeAlias:
                return(ScienceCategoryPartialViewNames.Slider);

            default:
                throw new NotSupportedException($"Document Type, {schema.DocumentTypeAlias}, is not currently supported.");
            }
        }
        private TViewModel CreateSection <TViewModel>(ScienceCategorySectionBaseSchema schema, string parentSectionHtmlId = null) where TViewModel : ScienceCategorySectionViewModelBase, new()
        {
            var section = new TViewModel()
            {
                Headline        = schema.Headline,
                PartialViewName = GetPartialViewName(schema),
                HideHeadline    = schema.HideHeadline
            };

            var sectionHtmlId = schema.Headline.ToUrlSegment();

            if (string.IsNullOrWhiteSpace(parentSectionHtmlId))
            {
                section.HtmlId = sectionHtmlId;
            }
            else
            {
                section.HtmlId = string.Join("-", parentSectionHtmlId, sectionHtmlId);
            }


            return(section);
        }