---
title: Create a "hello world" dynamic content
slug: cms-11/dev-docs/creating-a-hello-world-dynamic-content-legacy
docTags: 
createdAt: 2026-07-22T19:45:22.322Z
---

:::hint{type="warning"}
**Caution**
Dynamic content is deprecated in Optimizely Content Management System (CMS 12). Use blocks instead. While existing solutions will continue to work, you should not build new solutions on this API. It will be phased out in the future.
:::

The following example creates a dynamic content plug-in by implementing the `IDynamicContentView` interface.

For convenience, you inherit `DynamicContentBase` which implements `IDynamicContentBase`. You then add `IDynamicContentView` which supports MVC and Web Forms.

:::hint{type="info"}
**Note**
This example uses the `DynamicContentPlugInAttribute`, but only for registering the plug-in. You can also use the `DynamicContentPlugInAttribute` on a user control without implementing any interfaces.
:::

```csharp
using System;
using System.IO;
using EPiServer.Core;
using EPiServer.DynamicContent;

namespace CodeSamples.DynamicContent {
  [DynamicContentPlugIn(
    DisplayName = "ClassDynamicContentPlugin",
    Description = "Example of a Dynamic Content plugin as a simple class.")]
  public class ClassDynamicContentPlugin: DynamicContentBase, IDynamicContentView {
    public ClassDynamicContentPlugin() {}

    public void Render(TextWriter writer) {
      writer.Write("<div>Hello World</div>");
    }
  }
}
```
