Using LanguageSelector parameter in GetChildren method in Episerver 8



We recently upgraded our project to Episerver 8, and I read about the changes to content loading here:

In one part of our code, we need to find pages of a certain type, including unpublished and archived pages. The only way we figured out how to do that was by adding the LanguageSelector.Autodetect(true) parameter, like so:

var eventPages = contentRepository.GetChildren(startPage.EventsRoot, LanguageSelector.AutoDetect(true));

Is this still the recommended way to get pages regardless of publish status? I thought that the LanguageSelector was deprecated, but it still seems to be working in the GetChildren method anyway.


Apr 23, 2015 11:18


The equivalent call using LoaderOptions would be:

var eventPages = contentRepository.GetChildren<EventPage>(startPage.EventsRoot, new LoaderOptions{ LanguageLoaderOption.FallbackWithMaster() });

You can still use static methods on LanguageSelector if you prefer that, they will "under the hood" create a LoaderOptions instance as above. So basically is the static methods on LanguageSelector now convenient methods to create LoaderOptions with different LanguageLoaderOption. 

However if you write tests for your code I would suggest to use LanguageLoaderOption instead since they are easier to handle in that scenario and the static methods of LanguageSelector.

The main reason LoaderOptions where introduced (as a replacement to ILanguageSelector) was to make it possible to pass in other LoaderOption instances as well. (Currently there is also a ProjectLoaderOption and others might come).

Apr 24, 2015 14:38
This topic was created over six months ago and has been resolved. If you have a similar question, please create a new topic and refer to this one.
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.