Skip to content

Quick Start

using Umbraco.Cms.Core.Dashboards;
using Umbraco.Cms.Core.Models.ContentEditing;
using Umbraco.Community.SimpleContentApps.Core;
namespace Umbraco.Community.SimpleContentApps.TestSite;
public class BasicContentApp : ISimpleContentApp
{
public string Icon => Cms.Core.Constants.Icons.Content;
public bool ShowInContent => true;
public bool ShowInContentType => false;
public bool ShowInMedia => false;
public bool ShowInMembers => false;
public IAccessRule[] Rules => new[] { SimpleAccessRule.AllowAdminGroup };
public int Weight => 0;
public string Name => "Basic Content App";
public string? CultureName(string? currentUiCulture) => Name;
public ContentAppBadge? Badge => ContentAppBadges.None;
}
  • Your view must go in /Views/ContentApps
  • You view must be the name of your C# class (without ContentApp)
    • For example: BasicContentApp.cs => /Views/ContentApps/Basic.cshtml
@inherits Umbraco.Community.SimpleContentApps.Web.ContentAppViewPage
<h1>Hello Umbraco</h1>
<p>My ContentApp alias is: @Model.ContentApp.Alias()</p>
  • Your View Component should match the name of your C# class plus ViewComponent.cs
    • For example: BasicContentApp.cs => BasicContentAppViewComponent.cs
  • Your View Component must inherit either:
    • SimpleContentAppViewComponent
    • SimpleContentAppAsyncViewComponent
public class BasicContentAppViewComponent : SimpleContentAppAsyncViewComponent
{
public override Task<IViewComponentResult> InvokeAsync(SimpleContentAppModel model)
{
// Complex business logic
var viewModel = await _service.CreateViewModel(model);
// ...
return View("~/Views/MyPath/MyView.cshtml", viewModel);
}
}
Copyright © 2026 jcdcdev