Grzegorz Wiecheć
Jul 24, 2020
visibility 10425
star star star star star star
(10 votes)

Episerver Labs - LinkProperty

We would like to introduce a new Episerver Labs add-on. LinkProperty is a simple extension that allows editors to work with a single LinkItem instance.

The property is just a new UI Editor that still use PropertyLinkCollection as a backing type. It means that in the database it is a LinkItemCollection property with just one item.

The new editor looks similar to the ContentReference editor:

NewEditor1.jpg

When editing a link, the same dialog as for LinkItemCollection property is displayed:

NewEditor2.jpg

Using LinkProperty addon

To use LinkItemCollection as model type, you just need to annotate the LinkItemCollection property with a LinkItemProperty attribute:

[ContentType(GUID = "19671657-B684-4D95-A61F-8DD4FE60D559"]
public class StartPage : PageData
{
    [LinkItemProperty]
    public virtual LinkItemCollection IntranetLink { get; set; }
}

To use LinkItem as a model type, additionally you have to add BackingTypeAttribute attribute and override default getter and setter. These are extension methods, so it is just two lines of code:

[ContentType(GUID = "19671657-B684-4D95-A61F-8DD4FE60D559"]
public class StartPage : PageData
{
    [LinkItemProperty]
    [BackingType(typeof(PropertyLinkCollection))]
    public virtual LinkItem Link
    {
        get => this.GetLinkItemPropertyValue(nameof(Link));
        set => this.SetLinkItemPropertyValue(nameof(Link), value);
    }
}

LinkItem property model

For LinkItem as a model, you can additionally use a custom property renderer. It requires adding EPiServer.Labs.LinkItemProperty.LinkItemRendering.Tag tag when rendering:

@using AlloyTemplates
@model PageViewModel<TestPage>

@Html.PropertyFor(x => x.CurrentPage.Link, new { Tag = EPiServer.Labs.LinkItemProperty.LinkItemRendering.Tag })

NewEditor3.jpg

To add a new link, you can use the edit button, drag-and-drop content from the page tree or from other reference properties on the page.

The only limitation is that you have to use Episerver CMS 11.26.0 or higher, because it contains a fix necessary to make LinkProperty work.

The add-on is available as a NuGet package.

Jul 24, 2020

Comments

Drew Null
Drew Null Jul 27, 2020 10:11 PM

πŸ™Œ

K Khan
K Khan Jul 28, 2020 05:52 PM

:) very much desired behaviour

Jonas Carlbaum
Jonas Carlbaum Aug 3, 2020 11:56 AM

Nice... πŸ‘πŸ‘Œ

Daniel Ovaska
Daniel Ovaska Aug 10, 2020 09:36 AM

worth waiting for :)

K Khan
K Khan Aug 10, 2020 11:14 AM

couldn't find it on git, Is it on Git?

Grzegorz Wiecheć
Grzegorz Wiecheć Aug 28, 2020 06:13 AM

It's now on github: https://github.com/episerver/EPiServer.Labs.LinkitemProperty

Please report bugs releated with LinkItemProperty as issues on Github.

K Khan
K Khan Aug 28, 2020 09:37 AM

Thanks

error Please login to comment.
Latest blogs
Architecting an Enterprise-Grade Development Pipeline in Optimizely SaaS CMS

Most enterprise teams show up to Optimizely SaaS CMS with a clear roadmap for their release pipeline: DEV → QA → Stage → Prod. Four logical...

Vipin Banka | Jul 12, 2026

Bynder DAM Connector for Optimizely SaaS CMS: Improved Metadata Property Synchronization

While working with the Bynder DAM Connector for Optimizely SaaS CMS , one of the key areas I explored was how Bynder asset metadata is synchronized...

Vipin Banka | Jul 11, 2026

Optimizely DXP: Every Supported Culture, One Searchable Page

Quick one for anyone building multi-language sites on Optimizely DXP. I put together a reference tool listing all 806 supported cultures. More...

Adnan Zameer | Jul 10, 2026 |

A day in the life of an Optimizely OMVP: London Meetup 2026

On 2nd July 2026 the Optimizely London Developer Meetup returned to The Lightwell, and the running theme across the evening was less about individu...

Graham Carr | Jul 10, 2026

Optimizely’s Summer ’26 Roadmap: The CMS Is Starting to Look Less Like a Publishing Tool and More Like Marketing Infrastructure

Optimizely’s Summer ’26 Product Roadmap event was not just a list of product updates. At least, that is not the part I found most interesting. The...

Augusto Davalos | Jul 9, 2026

Optimizely Content JS SDK v2.1.0 — What's New and Why It Matters

  v2.1.0 of the Optimizely Content JS SDK and CLI landed on July 7, 2026. This is a substantial release bringing a wave of capabilities for...

Vipin Banka | Jul 8, 2026