Example #1
0
        public void Map(IDynamicDataModelSchema details, Type modelType)
        {
            if (details == null)
            {
                throw new ArgumentNullException(nameof(details));
            }
            if (modelType == null)
            {
                throw new ArgumentNullException(nameof(modelType));
            }

            var dataModelMetaData = _modelMetadataProvider.GetMetadataForType(modelType);

            details.DataTemplateName = StringHelper.FirstNonEmpty(
                dataModelMetaData.TemplateHint,
                dataModelMetaData.DataTypeName
                );

            var properiesMetaData = _modelMetadataProvider.GetMetadataForProperties(modelType);

            var dataModelProperties = new List <DynamicDataModelSchemaProperty>();

            foreach (var propertyMetaData in properiesMetaData.OrderBy(p => p.Order))
            {
                var property = new DynamicDataModelSchemaProperty();
                property.Name        = propertyMetaData.PropertyName;
                property.DisplayName = propertyMetaData.DisplayName;
                property.Description = propertyMetaData.Description;
                property.IsRequired  = propertyMetaData.IsRequired;

                property.DataTemplateName = StringHelper.FirstNonEmpty(
                    propertyMetaData.TemplateHint,
                    propertyMetaData.DataTypeName,
                    propertyMetaData.IsNullableValueType ? propertyMetaData.ModelType.GenericTypeArguments[0].Name : propertyMetaData.ModelType.Name
                    );

                // Not sure why the keys here could be objects, but we're not interested in
                // them if they are.
                property.AdditionalAttributes = propertyMetaData
                                                .AdditionalValues
                                                .Where(d => d.Key is string)
                                                .ToDictionary(d => (string)d.Key, d => d.Value);

                dataModelProperties.Add(property);
            }

            details.DataModelProperties = dataModelProperties.ToArray();
        }
Example #2
0
        public void Map(IDynamicDataModelSchema details, Type modelType)
        {
            Condition.Requires(details).IsNotNull();
            Condition.Requires(modelType).IsNotNull();

            var dataModelMetaData = _modelMetadataProvider.GetMetadataForType(null, modelType);

            details.DataTemplateName = StringHelper.FirstNonEmpty(
                dataModelMetaData.TemplateHint,
                dataModelMetaData.DataTypeName
                );

            var properiesMetaData = _modelMetadataProvider.GetMetadataForProperties(null, modelType);

            var dataModelProperties = new List <DynamicDataModelSchemaProperty>();

            foreach (var propertyMetaData in properiesMetaData.OrderBy(p => p.Order))
            {
                var property = new DynamicDataModelSchemaProperty();
                property.Name        = propertyMetaData.PropertyName;
                property.DisplayName = propertyMetaData.DisplayName;
                property.Description = propertyMetaData.Description;
                property.IsRequired  = propertyMetaData.IsRequired;

                property.DataTemplateName = StringHelper.FirstNonEmpty(
                    propertyMetaData.TemplateHint,
                    propertyMetaData.DataTypeName,
                    propertyMetaData.IsNullableValueType ? propertyMetaData.ModelType.GenericTypeArguments[0].Name : propertyMetaData.ModelType.Name
                    );

                property.AdditionalAttributes = propertyMetaData.AdditionalValues;

                dataModelProperties.Add(property);
            }

            details.DataModelProperties = dataModelProperties.ToArray();
        }