Umbraco Cheatsheet

Here’s a collection of links and tips for working with Umbraco. I’ll try to keep this up to date.

How do I run a custom controller

You want to use what Umbraco calls either “custom controllers” or “route hijacking”.

https://our.umbraco.org/documentation/reference/routing/custom-controllers

It looks for a controller matching the Document Type name, and then an action matching the Template name, with a fallback to Index().

Make sure it inherits from Umbraco.Web.Mvc.RenderMvcController.

How do I handle a form post?

Check out what Umbraco calls “Surface Controllers”

https://our.umbraco.org/documentation/reference/routing/surface-controllers

Make sure it inherits from Umbraco.Web.Mvc.SurfaceController

How do I render a rich text field with a macro?

If you’re using an Umbraco ORM for typed models, you might find rich text fields with macros rendering the macro XML instead of expanding.

public string RenderMacros(string richText, int documentId)
{
    var withMacros = umbraco.library.RenderMacroContent(richText, documentId);
    var withLinks = TemplateUtilities.ParseInternalLinks(withMacros);
    return withLinks;
}

You’ll also want to call ParseInternalLinks which converts hrefs like /{localLink:1085} into the real URLs.

See: https://www.mattburkedev.com/new-application-slash-tree-in-umbraco-7-backoffice-not-showing/ for a convenient extension method.

How do I get typed models in my view?

May I humbly suggest using The Nerdery’s Umbraco Vault project?

How do I create a custom tab in the back office (7+)?

Its called an “application” or a “section” and sometimes a “plugin”. Those terms should help your Google searching.