protected virtual object ConvertStringToPropertyType(ModelBindingContext bindingContext, string value) { if (bindingContext.ModelMetadata.ConvertEmptyStringToNull && string.IsNullOrWhiteSpace(value)) { return(null); } var extensionInfo = ObjectExtensionManager.Instance.GetOrNull(ExtensibleObjectType); if (extensionInfo == null) { return(value); } var propertyName = ExtraPropertyBindingHelper.ExtractExtraPropertyName(bindingContext.ModelName); if (propertyName == null) { return(value); } var propertyInfo = extensionInfo.GetPropertyOrNull(propertyName); if (propertyInfo == null) { return(value); } return(TypeHelper.ConvertFromString( propertyInfo.Type, value )); }
public void ExtractExtraPropertyName_Tests() { ExtraPropertyBindingHelper.ExtractExtraPropertyName( "MyObject.UserInfo.ExtraProperties[SocialSecurityNumber]" ).ShouldBe("SocialSecurityNumber"); ExtraPropertyBindingHelper.ExtractExtraPropertyName( "UserInfo.ExtraProperties[SocialSecurityNumber]" ).ShouldBe("SocialSecurityNumber"); ExtraPropertyBindingHelper.ExtractExtraPropertyName( "ExtraProperties[SocialSecurityNumber]" ).ShouldBe("SocialSecurityNumber"); ExtraPropertyBindingHelper.ExtractExtraPropertyName( "SocialSecurityNumber" ).ShouldBeNull(); }