Denote required properties in Episerver

Denna artikel har migrerats från en tidigare version av vår webbplats och kan därför avvika i utseende och funktionalitet.

Den här artikeln är inte översatt till svenska och visas därför på engelska istället.


This code snippet shows how to add an asterisk to the property names of all required properties in Episerver.

Uppskattad lästid : 1 minuter

Gå till avsnitt

To make it easier for editors to see which Episerver properties are required, you can automatically customize the property meta data to modify the property display names.

For this example, this means all required properties appear with an asterisk after the display name in edit mode:

We accomplish this by customizing the meta data through a type implementing IMetadataExtender:

public class RequiredPropertiesMetadataExtender : IMetadataExtender
{
    public void ModifyMetadata(ExtendedMetadata metadata, IEnumerable<Attribute> attributes)
    {
        // Add asterisk to required (editable) properties
        metadata.Properties.OfType<ContentDataMetadata>()
                           .Where(p => p.IsRequired && !p.IsReadOnly)
                           .ForEach((property) => { property.DisplayName = $"{property.DisplayName} (*)"; });
    }
}

Finally, we register our meta data extender with the following initialization module:

[InitializableModule]
[ModuleDependency(typeof (InitializableModule))]
public class RequiredPropertiesMetadataExtenderInitialization : IInitializableModule
{
    public void Initialize(InitializationEngine context)
    {
        if (context.HostType == HostType.WebApplication)
        {
            var registry = context.Locate.Advanced.GetInstance<MetadataHandlerRegistry>();

            registry.RegisterMetadataHandler(typeof(ContentData), new RequiredPropertiesMetadataExtender());
        }
    } 
        
    public void Preload(string[] parameters) { } 
        
    public void Uninitialize(InitializationEngine context) { }
}

Note: As Mattias pointed out in the comments, this example doesn't work for localized property names.