Category Archives: PageTypeBuilder

Match EPiServer properties and Page Type Builder properties (Updated)

Updated: 2011-09-21, Lee Crowe has updated this plugin. Please check out his blog post: Introducing Page Type Builder UI

Updated: This can now be found on GitHub:

Updated: 2010-11-10 16:23, see more at the end of this post!

Using PageTypeBuilder when creating EPiServer web sites?

Then you’re probably aware of when removing properties in code, they won’t change in EPiServer. Same thing when changing a property type in PTB, it won’t change in EPiServer.

In larger projects with a lot of inheritance between page types this can be really annoying, going through all page types and remove/change properties. So I created a plugin that displays miss matches between EPiServer and PTB-properties. In the plugin you can also delete unwanted properties, but for now you can’t convert them to another property type.

The plugin will appear in admin-mode:

And looks something like this.

Don’t forget to put the plugin in a secured folder (or remove it in production environment).

This plugin is tested with EPiServer CMS 6 and Page Type Builder 1.3.

Download the plugin at:


Fixed a bug reported at the code section and also added a link to the page type, and also added a link to edit the property if there was a mismatch.

Creating classes for PageTypeBuilder in an existing project

Update: This can now be found on GitHub:

While everyone else is creating cool gadgets for the new site center I was appointed to update an “old” site with some new functionality. And since PageTypeBuilder was introduced in my EPiServer life, and don’t feel like working without it in any project. If this would’ve been a small project I would probably just created the PTB classes by hand, but after looking into the page type list I was freaked out. Therefore I spent some time creating a “plugin” (it’s not a  real plugin, just “some” code) that creates PageTypes classes from all the page types and properties in the current project.

Step 1
The first step is to download the source code, it’s a zip-file containing a .aspx/.designer/.cs
Download it here

Step 2
Include the files in your project.

Step 3
Open you web browser and surf to the page.

Step 4
There are a few values that yo can change before doing the import/export (it’s up to you to define what it is :)).
You can add a prefix before and after the class name, change the base class that the classes should extend, enter a namespace (required) and finally decide where to put the files.

You can also exclude page types that you don’t want to include.

And finally you can decide which namespaces that should be included by default.

Step 5
When clicking “Create classes” you will see a log of classes created plus if something is excluded.
An example is that every propertyname with a “-” in it will be excluded because you can’t have “-” in a property name in C#.
When the files are created you just have to include them in your project and you should be good to go. You have to remember to include a reference to PageTypeBuilder, and you also need to change so all PageTypes .aspx.cs files inherits from the right class.

One other thing that should be mentioned is that PageTypes names like “[Something] Page Type Name” will end up like [yout catalog]\Something\PageTypeName.cs (if you don’t have any prefix).

Update – 091103 10:23
1. Discovered a bug and updated the source files.
2. Before using this, backup you database, this code is used without any warranty.
3. If you want to extend the functionality, please feel free to do it.

Update – 100128
DefaultValueType was not set which lead to some problems. Fixed.

PageTypeBuilder – makes developing with EPiServer funny

As you may have noticed over the last month, Joel Abrahamsson has created a module to EPiServer called PageTypeBuilder. In a short explanation PageTypeBuilder brings joy into developing with EPiServer! No more need for ranting around in admin mode, no more need of synchronizing page types between dev – test- stage – live! You get stronged typed access to all properties defined, you can inherit page types, you can also very easy create your own package with page types and reuse it in another project. Anyway, Joel explains it all on his own blog in four different blog posts.

So why am I writing this post when Joel explains it all?

First of all, I want to spread the PageTypeBuilder – I can guarantee that you will enjoy working with EPiServer much much more with this module.

Just a small thing like this code makes me happy.

public T1 GetDefaultPageData<T1>(PageReference parent) where T1 : TypedPageData
int? id = PageTypeResolver.Instance.GetPageTypeID(typeof(T1));
if (!id.HasValue)
throw new Exception("Could not find PageTypeID for class " + typeof(T1).ToString());
return (T1)DataFactory.Instance.GetDefaultPageData(parent, id.Value);

With this code you can create a new page of any page type you have defined with the PageTypeBuilder without having to store the id or the name of the page type in some settings page/web.config. You just need to use this nice line:

MyPageType myPage = GetDefaultPageData<MyPageType>(pageRefParent);

Code snippets

Another reason for writing this post is to say that I’ve updated the code snippets I’ve blogged about earlier.

I’ve added two snippets:

  • pt – which is the attribute for the class
  • ptppage – page reference property

I’ve also updated all the old snippets to include EditCaption and HelpText, so it’s a bit more user friendly now.

You can download the new zip-package here

Unzip the files into “My Documents\Visual Studio 2008\Code Snippets\Visual C#\My Code Snippets”.

Update: Code Snippets to PageTypeBuilder

UPDATE: The code snippets are updated, read more in this blog post.

Since the way of including properties in PageTypeBuilder has been changed, so has the snippets.

This ZIP-package includes nine different snippets:

  • ptpbool – Selected/Not selected
  • ptpdate – Date
  • ptpimage – URL to image
  • ptpnumber- Integer
  • ptpobject – You decide.. 🙂
  • ptpstring – Short string
  • ptpurl – URL
  • ptpxhtmlstring – XHTML with properties
  • ptplongstring – XHTML string with no properties

Click here to download the snippets, unzip the files into “My Documents\Visual Studio 2008\Code Snippets\Visual C#\My Code Snippets”

By the way, I found a better tool for making snippets, even though it’s called VB Snippet Editor, it handles C# snippets aswell 🙂 You can find it here: