Umbraco is built on the idea of document types and templates. The document type defines the data that is to appear on a page, the template shows how that data will appear, so when you create content, it is based on a document type and a choice of templates that you are allowed to use for that document type. You don’t want to make the mistake of creating many different templates for different content. Templates are about layout, not content. This post describes how to create a custom component in Umbraco 7 and allow the users themselves to put it on a page of their own choosing.
Previous versions of Umbraco did something similar with Windows Forms user controls. Umbraco 7 is about MVC. We are going to use MVC partial views in particular to achieve this.
Firstly, you need a Visual Studio project with Umbraco installed. Refer to my blog post on Howto: Installing Umbraco in Visual Studio via Nuget if you don’t already have a Visual Studio project.
Step 1. Create a partial view macro.
Create a partial view macro by right clicking the Views/Partials/MacroPartials folder and clicking Add View.
Alternatively you can use Umbraco, but you will have to review the Visual Studio project afterwards and ensure the new view is included in the project and in your source control system correctly.
In the example below, I create a partial view from the Site Map snippet using Developer->Partial View Macro Files->Create:
To do this, in Umbraco, click on Macros, find the macro just created and click on the name to the left of the Ellipsis (…). Your aim is to tick the Editor settings “Use in rich text editor and the grid” and optionally “Render in rich text editor and the grid” as shown below:
N.B. Don’t forget to press Save when you are done.
If you ticked both options when you set up the macro, the macro is displayed in the content editor as well as being available from the Choose a macro drop downlist:
N.B. There is no reason why you can’t put in a Html.Partial command and refer to other partial views and controllers etc. I tend to do this quite a bit in order to keep the code separate and to have a small partial view macro file that is just used to make other views available in the Umbraco rich text editor.