A critical vulnerability was discovered in React Server Components (Next.js). Our systems remain protected but we advise to update packages to newest version. Learn More

Per Nergård (MVP)
Sep 21, 2015
  2203
(1 votes)

WebControl for bootstraprows and contentareas

If there still are anyone out there using forms maybe this can be of some use.

Scenario is that you have a template with:

  • One or many rows, with different combinations of content areas and other properties.
  • All properties are rendered as columns.
  • None of the properties are required.
  • We assume that the editors either add values to all properties in a row or add no values at all.

If the editor doesn't add values to atleast one of the properties in a row we would end up with a empty bootstrap row which we don't want to.

To avoid having to write codebehind code to handle this I did a webcontrol. The webcontrol checks all inner properties (which must be of type EPiServer:Property) and if all are empty the row isn't rendered.

Example:

<Nergard:BootstrapRow CssClass="row" runat="server">
    <EPiServer:Property PropertyName="ContentArea" runat="server" CustomTagName="div" CssClass="col-md-6"/>
    <EPiServer:Property PropertyName="MainBody" runat="server" CustomTagName="div" CssClass="col-md-6"/ />
</Nergard:BootstrapRow>

You can use both the PageLink and PageLinkPropertyName attributes in the EPiServer:Property if you want to use them.

Code over at GitHub Gist:  Code.

Sep 21, 2015

Comments

Please login to comment.
Latest blogs
ScheduledJob for getting overview of site content usage

In one of my current project which we are going to upgrade from Optimizely 11 I needed to get an overview of the content and which content types we...

Per Nergård (MVP) | Jan 27, 2026

A day in the life of an Optimizely OMVP: Migrating an Optimizely CMS Extension from CMS 12 to CMS 13: A Developer's Guide

With Optimizely CMS 13 now available in preview, extension developers need to understand what changes are required to make their packages compatibl...

Graham Carr | Jan 26, 2026

An “empty” Optimizely CMS 13 (preview) site on .NET 10

Optimizely CMS 13 is currently available as a preview. If you want a clean sandbox on .NET 10, the fastest path today is to scaffold a CMS 12 “empt...

Pär Wissmark | Jan 26, 2026 |

Building AI-Powered Tools with Optimizely Opal - A Step-by-Step Guide

Learn how to build and integrate custom tools with Optimizely Opal using the Opal Tools SDK. This tutorial walks through creating tools, handling...

Michał Mitas | Jan 26, 2026 |