Linus Ekström
Jan 27, 2011
visibility 5133
star star star star star
(3 votes)

Property/PropertyDataControl changes

Custom tag name

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

<h1>[Pagename]</h1>

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

<h1 class=”myheadingclass”>[Pagename]</h1>

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.

Control creation for null value properties

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.

Jan 27, 2011

Comments

Jan 27, 2011 02:48 PM

Nice tweak, simple but could prove useful

Oskar Zetterberg
Oskar Zetterberg Jan 27, 2011 02:56 PM

Excellent, i´ve been waiting for something like this. Now we can get the markup the way we want it without the need of ugly hacks :).

Steve Celius
Steve Celius Jan 27, 2011 04:08 PM

How does this relate to the AttributeSourceControl property? I've used that to extract information from the container control (EPiServer:Property), like this:
https://www.coderesort.com/p/epicode/browser/MakingWaves.EPiImage/6.x/EPiImage/Properties/EPiImagePropertyControl.cs#L175

Did I do it wrong?

Linus Ekström
Linus Ekström Jan 28, 2011 04:03 PM

Steve: Your code will still work. It's up to the implementation in CreateDefaultControls to make use/copy any attributes. It's also up to this method to decide if the custom tag name makes any sense for your property. We have gone through the built in property controls and implemented support to either directly create a tag with the custom name or in some cases (for instance links) wrap the inner control in the custom tag (

[Link text]

).

error Please login to comment.
Latest blogs
Add more scheduled job settings from the Optimizely CMS 12 admin UI -- with OptiScheduledJob.ExtraParameters

  Optimizely (EPiServer) CMS 12 ships a great scheduled-jobs framework, but it has one frustrating gap: a job has nowhere to store its own...

Binh Nguyen Thi | Jun 25, 2026

Automated Search & Navigation to Graph Migration with Claude Code

A Claude Code plugin that scans your S&N codebase, applies Graph SDK transformations, and validates the result. Install once, run one command. CMS ...

Connor Fortin | Jun 24, 2026

Migrating from Find to Graph: Lessons Learned from a Real CMS 13 Project

While migrating a search solution from Optimizely Search & Navigation (Find) to Optimizely Graph in CMS 13, I encountered several issues that were...

Binh Nguyen Thi | Jun 24, 2026

Optimizely: Upgrade Opti-ID and .NET 10 in CMS 12

Many Optimizely customers are planning their roadmap around a future migration to Optimizely CMS 13. As a result, upgrades such as Opti ID adoption...

Madhu | Jun 23, 2026 |

Understanding Optimizely Graph: Caching, Webhooks & Avoiding Stale Content (Optimizely SaaS CMS)

📌 Scope: This post covers Optimizely CMS (SaaS) only — using the official @optimizely/cms-sdk and @optimizely/cms-cli packages with Next.js 15. If...

Kiran Patil | Jun 23, 2026 |

Optimizely Content APIs: the Setup the Docs Don't Walk You Through

CMS 13 is pushing things firmly in the direction of Optimizely Graph, but plenty of teams are still running on older CMS versions, or have good...

Andre | Jun 22, 2026