In this tutorial, you will learn how to get access to the CurrentPaget object within Episerver CMS V8. In Episerver 8, there are two API's that you can use to fetch and modify content from the CMS. These are the IContentLoader and the IContentRepository. In today's guide, you will learn the differences between these two APIs. If you want to be an Episerver querying ninja, read on 🔥🔥🔥


IContentLoader is the basic API for querying content from the CMS. This API can be used if you want to read data from the CMS only. You can not do any updates or save operations using this API. It implements methods such as Get<T>, GetChildren<T> and GetDescendants<T>. To get a page from Episerver using IContentLoader you would use this code:

The API uses generics, where T is the type of content you want to query from the CMS. T is passed into Get<T>. In the example above, I have set T as PageType. PageType is a custom class that you will need to define in your code. The only restriction on this code is that T has to be a type that implements from the IContent interface (more information about IContent can be found here.

To aid in your understanding, I have also included an example of how the code to create PageType could look like:

The important part of this code is that the class implements from PageData. PageData implements the IContent interface. If you added this code within your project, built and ran your solution, a new page type called Custom Page Type could be created within the CMS.


IContentRepository is the more advanced older brother of IContentLoader. IContentRepository provides exactly the same functionality as IContentLoader. It also provides some additional things, like saving and deleting content 😲. Behind the scenes, IContentRepository implements the IContentLoader interface. This is why anything that you can do in IContentLoader you can also do in IContentRepository. Accessing IContentRepository is exactly the same as accessing IContentLoader, as seen here:

An example of how to save some content into Epsierver with IContentRepository looks like this:

When I write code, I tend to just use IContentRepository as you can never plan how the code base will grow over time. If you use IContentLoader and you need to write data back to the CMS, you have more code to refactor and more unit tests to change. The arguments for IContentLoader are usually security and performance. I personally think these are a non-issue and Episerver could have just given us one API. If someone can update your code, you have bigger issues than which API to use. In terms of performance, you use dependency injection to access these APIs which uses a transient context, so API access time is a non-issue. Use the method that makes you happy 😊. Happy Coding 🤘