Custom boolean field 'Cannot convert attribute "value" to type "System.Boolean"'
hey folks, I just tried to add a custom YesNo field to the products module through the interface and although the process seemed to complete without error, but now I receive the message below when trying to view the Products module. is there a bug in the way these values are parsed?
i looked at the xml config for the module and the value field seems pretty straightforward
<field mutuallyExclusive="True" renderChoiceAs="SingleCheckBox" hideTitle="True" dataFieldName="Taxable" value="False" type:value="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" wrapperTag="Li" title="Taxable" example="Should taxes be applied to this product" fieldType="Telerik.Sitefinity.Web.UI.Fields.ChoiceField" type:fieldType="System.RuntimeType, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" cssClass="" hidden="False" fieldName="Taxable" type:this="Telerik.Sitefinity.Web.UI.Fields.Config.ChoiceFieldElement, Telerik.Sitefinity, Version=4.0.1210.0, Culture=neutral, PublicKeyToken=b28c218413bdf563"><choicesConfig>
<clear /><element text="Taxable" value="True" enabled="False" selected="False" /></choicesConfig><validator expectedFormat="None" maxLength="0" minLength="0" alphaNumericViolationMessage="Non alphanumeric characters are not allowed." currencyViolationMessage="You have entered an invalid currency." emailAddressViolationMessage="You have entered an invalid email address." integerViolationMessage="You have entered an invalid integer." interneturlviolationmessage="You have entered an invalid URL." maxLengthViolationMessage="Too long" maxValueViolationMessage="Too big" messageCssClass="sfError" messageTagName="div" minLengthViolationMessage="Too short." minValueViolationMessage="Too small." nonAlphaNumericViolationMessage="Alphanumeric characters are not allowed." numericViolationMessage="You have entered an invalid number." percentageViolationMessage="You have entered an invalid percentage." regularExpressionViolationMessage="Ivalid format." requiredViolationMessage="Required field." usSocialSecurityNumberViolationMessage="You have entered an invalid US social security number." usZipCodeViolationMessage="You have entered an invalid US ZIP code." validateIfInvisible="True" /><expandableDefinition expandText="" expanded="True" /> </field> </fields>
[No relevant source lines] |
[ConfigurationErrorsException: Cannot convert attribute "value" to type "System.Boolean". Line number 22.] Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadValue(XmlReader reader, String propertyName, Type definedType, ConfigProperty property) +422 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadAttributes(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, Boolean isUpgrading) +196 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, Boolean isUpgrading) +56 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadCollectionElement(ConfigElementCollection collection, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, Boolean isUpgrading) +381 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, Boolean isUpgrading) +297 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadPropertyElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, Boolean isUpgrading) +324 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, Boolean isUpgrading) +427 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadCollectionElement(ConfigElementCollection collection, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, Boolean isUpgrading) +381 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, Boolean isUpgrading) +297 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadPropertyElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, Boolean isUpgrading) +324 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, Boolean isUpgrading) +427 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadCollectionElement(ConfigElementCollection collection, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, Boolean isUpgrading) +381 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, Boolean isUpgrading) +297 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadPropertyElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, Boolean isUpgrading) +324 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, Boolean isUpgrading) +427 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadCollectionElement(ConfigElementCollection collection, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, Boolean isUpgrading) +381 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, Boolean isUpgrading) +297 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadPropertyElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, Boolean isUpgrading) +324 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadElement(ConfigElement element, XmlReader reader, ConfigPolicyHandler policyHandler, String policyName, Boolean isUpgrading) +427 Telerik.Sitefinity.Configuration.Data.XmlConfigProvider.LoadSection(ConfigSection section, ConfigPolicyHandler policyHandler, String policyName) +260 Telerik.Sitefinity.Configuration.ConfigSection.Initialize(ConfigProvider provider, ConfigPolicyHandler policyHandler, String policyName, Boolean singlePolicy) +149 Telerik.Sitefinity.Configuration.ConfigSection.Initialize(ConfigProvider provider) +16 Telerik.Sitefinity.Configuration.Config.GetConfigSection(String name) +233 Telerik.Sitefinity.Configuration.Config.GetByPath(String path) +61 Telerik.Sitefinity.Configuration.ConfigElementLink.GetLinkedElement() +47 Telerik.Sitefinity.Configuration.ConfigElementDictionary`2.TryGetValueInternal(TKey key, TElement& element) +107 Telerik.Sitefinity.Configuration.ConfigElementDictionary`2.get_Item(TKey key) +19 Telerik.Sitefinity.Web.UI.ContentUI.ContentViewControlDefinition.GetConfigurationDefinition() +64 Telerik.Sitefinity.Web.UI.DefinitionBase.get_ConfigDefinition() +21 Telerik.Sitefinity.Web.UI.DefinitionBase.ResolveProperty(String propertyName, T instanceValue, T defaultValue) +226 Telerik.Sitefinity.Web.UI.DefinitionBase.ResolveProperty(String propertyName, T instanceValue) +62 Telerik.Sitefinity.Web.UI.ContentUI.ContentViewControlDefinition.get_ManagerType() +35 Telerik.Sitefinity.Web.UI.ContentUI.ContentView.ResolveContentManager() +28 Telerik.Sitefinity.Web.UI.ContentUI.ContentView.ResolveDetailItem() +76 Telerik.Sitefinity.Web.UI.ContentUI.ContentView.CreateChildControls() +35 System.Web.UI.Control.EnsureChildControls() +102 System.Web.UI.Control.PreRenderRecursiveInternal() +42 System.Web.UI.Control.PreRenderRecursiveInternal() +175 System.Web.UI.Control.PreRenderRecursiveInternal() +175 System.Web.UI.Control.PreRenderRecursiveInternal() +175 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +8387 System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +253 System.Web.UI.Page.ProcessRequest() +78 System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +21 System.Web.UI.Page.ProcessRequest(HttpContext context) +49 ASP.sfres_telerik_sitefinity_resources_sitefinitydefault_aspx.ProcessRequest(HttpContext context) in c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\0360db66\2be72016\App_Web_telerik.sitefinity.resources.sitefinitydefault.aspx.f785aa1a.rr2us6pr.0.cs:0 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +100 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75 |
I commented out the field definitions in the .config file and then I could load the manager, view products, and edit custom fields. Setting it's predefined value to "" caused the same issue.
I repeated the process and then put "Yes" as the default value. This time I received Cannot access a disposed object. Object name: 'Database has been disposed.'. A restart of the app solved that and appears to allow the fields to work as expected.
I do want to note that the Products module is still exhibiting the behavior I described in the post linked below. (i.e when I add a Custom field I will get itemContext.item is null or undefined, and return code 0 when trying to Edit/Insert. Turning off the app, Clearing cache and walking away for a while seems to fix this, but it's frustrating as heck for an end user, and unacceptable for a production site.
http://www.sitefinity.com/devnet/forums/sitefinity-4-x/sdk/custom-field-in-products-causes-return-code-0-or-itemcontext-is-undefined.aspx
Hi Drew,
Thank you for the feedback.
We agree that there is a lot to polish in this area. Fortunately with the Q1 release, we will bring a lot of improvements all over the place.