|Number of votes:||3|
CMS 6 R2 introduces two minor changes to the Property and PropertyDataControl web controls. First it's possible to set a CustomTagName attribute on your property controls for your templates. If this value is set this will propagate to the created Property control and the default implementation for CreateDefaultControls in PropertyDataControl creates a html tag with the given name instead of just creating a span tag. For instance:
<Property runat="server" PropertyName="Pagename" CustomTagName="h1" />
will result in
The property web control has support to copy it's attributes to the created web control. Since a custom tag is created with the HtmlGenericControl that does not inherit from WebControl some attributes might not be copied from the Property web control to the created tag control. Styles, attributes in the Attributes collection as well as the CssClass property are passed on to the end control. Example:
<Property runat="server" PropertyName="Pagename" CustomTagName="h1" CssClass=”myheadingclass” />
will result in
If you have a custom property control and want to apply the attribute copying PropertyDataControl has two overloads of a method called CopyWebAttributes that can either take a WebControl or a HtmlControl. These are virtual so that you can customize the actual attribute copying in your control.
Another change is that PropertyDataControl has a new protected virtual method called ShouldCreateDefaultControls. If this returns false the call to CreateDefaultControls is never made from PropertyDataControl. The default implementation only makes a call to CreateDefaultControls if the PropertyData.IsNull property returns false. This can be a breaking change since a developer may have an implementation for the CreateDefaultControls that creates controls even if the IsNull-property returns true. In this case, the fix is to override the ShouldCreateDefaultControls method and always return true.
Note: these changes are not available in the CMS 6 R2 Beta release.