private ContentModelMetadata GetContentCultureModelMetadata(ModelMetadataProvider provider, Type containerType, object container = null, Func <object> modelAccessor = null)
        {
            if (modelAccessor == null)
            {
                modelAccessor = () => _cultureManager.GetDefaultCulture();
            }

            var modelMetadata = new ContentModelMetadata(provider, containerType, modelAccessor, typeof(CultureInfo), "Culture");

            modelMetadata.TemplateHint        = "HiddenInput";
            modelMetadata.HideSurroundingHtml = true;

            return(modelMetadata);
        }
        private ContentModelMetadata GetContentContentTypeFullNameModelMetadata(ModelMetadataProvider provider, Type containerType, ContentType contentType = null, Func <object> modelAccessor = null)
        {
            if (modelAccessor == null)
            {
                modelAccessor = () => contentType.FullName;
            }

            var modelMetadata = new ContentModelMetadata(provider, containerType, modelAccessor, typeof(string), "ContentTypeFullName");

            modelMetadata.TemplateHint        = "HiddenInput";
            modelMetadata.HideSurroundingHtml = true;

            return(modelMetadata);
        }
        private ContentModelMetadata GetContentContentIdModelMetadata(ModelMetadataProvider provider, Type containerType, object container = null, Func <object> modelAccessor = null)
        {
            if (modelAccessor == null)
            {
                if (container == null)
                {
                    modelAccessor = () => Guid.NewGuid();
                }
                else
                {
                    modelAccessor = () => ((Content)container).Id;
                }
            }

            var modelMetadata = new ContentModelMetadata(provider, containerType, modelAccessor, typeof(Guid), "Id");

            modelMetadata.TemplateHint        = "HiddenInput";
            modelMetadata.HideSurroundingHtml = true;

            return(modelMetadata);
        }
        private ContentModelMetadata GetContentModelMetadata(ModelMetadataProvider provider, IEntityWithMetadata entityWithMetadata, Type containerType, Func <object> modelAccessor, Type modelType, string propertyName)
        {
            var metadata = new ContentModelMetadata(provider, containerType, modelAccessor, modelType, propertyName);

            metadata.ShowForDisplay = entityWithMetadata.GetMetadataOrDefault <bool>("ShowForDisplay");

            string displayName;

            if (entityWithMetadata.TryGetMetadata("DisplayName", out displayName))
            {
                metadata.DisplayName = displayName;
            }

            string shortDisplayName;

            if (entityWithMetadata.TryGetMetadata("ShortDisplayName", out shortDisplayName))
            {
                metadata.ShortDisplayName = shortDisplayName;
            }

            string templateHint;

            if (entityWithMetadata.TryGetMetadata("TemplateHint", out templateHint))
            {
                metadata.TemplateHint = templateHint;
            }
            else
            {
                metadata.TemplateHint = GetDefaultTemplateHint(provider, entityWithMetadata, containerType, modelAccessor, modelType, propertyName);
            }

            string description;

            if (entityWithMetadata.TryGetMetadata("Description", out description))
            {
                metadata.Description = description;
            }

            string nullDisplayText;

            if (entityWithMetadata.TryGetMetadata("NullDisplayText", out nullDisplayText))
            {
                metadata.NullDisplayText = nullDisplayText;
            }

            string watermark;

            if (entityWithMetadata.TryGetMetadata("Watermark", out watermark))
            {
                metadata.Watermark = watermark;
            }

            bool hideSurroundingHtml;

            if (entityWithMetadata.TryGetMetadata("HideSurroundingHtml", out hideSurroundingHtml))
            {
                metadata.HideSurroundingHtml = hideSurroundingHtml;
            }

            bool requestValidationEnabled;

            if (entityWithMetadata.TryGetMetadata("RequestValidationEnabled", out requestValidationEnabled))
            {
                metadata.RequestValidationEnabled = requestValidationEnabled;
            }

            bool isReadOnly;

            if (entityWithMetadata.TryGetMetadata("IsReadOnly", out isReadOnly))
            {
                metadata.IsReadOnly = isReadOnly;
            }

            bool isRequired;

            if (entityWithMetadata.TryGetMetadata("IsRequired", out isRequired))
            {
                metadata.IsRequired = isRequired;
            }

            bool showForEdit;

            if (entityWithMetadata.TryGetMetadata("ShowForEdit", out showForEdit))
            {
                metadata.ShowForEdit = showForEdit;
            }
            else
            {
                metadata.ShowForEdit = !metadata.IsReadOnly;
            }

            int order;

            if (entityWithMetadata.TryGetMetadata("Order", out order))
            {
                metadata.Order = order;
            }

            string displayFormatString;

            if (entityWithMetadata.TryGetMetadata("DisplayFormatString", out displayFormatString))
            {
                metadata.DisplayFormatString = displayFormatString;
            }


            string editFormatString;

            if (entityWithMetadata.GetMetadataOrDefault <bool>("ApplyFormatInEditMode") && metadata.ShowForEdit && entityWithMetadata.TryGetMetadata("EditFormatString", out editFormatString))
            {
                metadata.EditFormatString = editFormatString;
            }

            bool convertEmptyStringToNull;

            if (entityWithMetadata.TryGetMetadata("ConvertEmptyStringToNull", out convertEmptyStringToNull))
            {
                metadata.ConvertEmptyStringToNull = convertEmptyStringToNull;
            }

            return(metadata);
        }