private string GetPartialViewName(ScienceDetailsSectionBaseSchema schema)
        {
            switch (schema.DocumentTypeAlias)
            {
            case ScienceDetailsSectionRichTextSchema.ModelTypeAlias:
            case ScienceDetailsSubSectionRichTextSchema.ModelTypeAlias:
                return(ScienceDetailsPartialViewNames.RichText);

            case ScienceDetailsSubSectionImageGallerySchema.ModelTypeAlias:
            case ScienceDetailsSectionImageGallerySchema.ModelTypeAlias:
                return(ScienceDetailsPartialViewNames.ImageGallery);

            case ScienceDetailsIndividualSectionImageTextSchema.ModelTypeAlias:
            case ScienceDetailsSectionImageTextSchema.ModelTypeAlias:
            case ScienceDetailsSubSectionImageRichTextSchema.ModelTypeAlias:
                return(ScienceDetailsPartialViewNames.ImageRichText);

            case ScienceDetailsIndividualSectionImageCodeSchema.ModelTypeAlias:
            case ScienceDetailsSectionImageCodeSchema.ModelTypeAlias:
            case ScienceDetailsSubSectionImageCodeSchema.ModelTypeAlias:
                return(ScienceDetailsPartialViewNames.ImageCode);

            case ScienceDetailsSectionSliderSchema.ModelTypeAlias:
            case ScienceDetailsSubSectionSliderSchema.ModelTypeAlias:
                return(ScienceDetailsPartialViewNames.Slider);

            default:
                throw new NotSupportedException($"Document Type, {schema.DocumentTypeAlias}, is not currently supported.");
            }
        }
        private TViewModel CreateSection <TViewModel>(ScienceDetailsSectionBaseSchema schema, string parentSectionHtmlId = null) where TViewModel : ScienceDetailsSectionViewModelBase, 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);
        }