IPublishedContent Property Access & Extension Methods
Umbraco Properties
Built-in properties, which exists on all content objects by default
Common Examples
.Id
Returns the unique Id for the current content item
.Name
Returns the Name of the current content item in the current culture
.Name(IVariationContextAccessor, string culture = null)
Returns the Name of the current content item in the specified culture, null falls back to the current culture
.ContentType
Returns a strongly typed 'PublishedContentType' object representing the content type the IPublishedContent item is based on, that gives access to the alias
.GetCultureFromDomains(IUmbracoContextAccessor, ISiteDomainHelper, Uri current = null)
Returns a culture from a configured domain in the content tree.
.Parent
Returns the parent content item
.Path
Returns a comma delimited string of Node Ids that represent the path of content items back to root.
.Level
Returns the Level (depth) this content item is in its tree path
.TemplateId
Returns the id of the default Template object used with this content item.
There are extension methods to retrieve template alias (Model.GetTemplateAlias())
.SortOrder
Returns the index the page is on, compared to its siblings
.Url(PublishedUrlProvider, culture = null, UrlMode mode = UrlMode.Default) - (Extension method)
Returns the Url to the page.
Example: Getting a Danish Url for a site where a Danish language has been set up.
Example: Getting an Absolute Danish Url for a site where a Danish language has been set up.
.UrlSegment
Returns the Url encoded name of the page (slug) of the current culture
.UrlSegment(IVariationContextAccessor, string culture = null)
Returns the Url encoded name of the page (slug) of the specified culture
.WriterId
Returns the id of the Umbraco backoffice user that performed the last update operation on the content item.
.WriterName(IUserService)
Returns the name of the Umbraco backoffice user that initially created the content item.
.CreatorId
Returns the id of the Umbraco backoffice user that initially created the content item
.CreatorName(IUserService)
Returns the name of the Umbraco backoffice user that initially created the content item.
.CreateDate
Returns the DateTime the page was created
.UpdateDate
Returns the DateTime the page was modified
Custom properties
All content and media items contain a reference to all the data defined by their Document Type. Custom property access is achieved using variations of the method: Value
Model.Value(IPublishedValueFallback, string)
Returns the property value for the specified property alias
The type returned of this property value is object
. This is fine in most cases since when using the above syntax, Razor will automatically execute a ToString()
on the result value.
See Model.Value<T>(string)
for how to return a strongly typed object for the property
Model.Value<T>(string)
Returns the property value for the specified property alias converted to 'T' - the requested output type of the property value.
For example, to return the string
result of "siteName":
Fallbacks
If the current content item doesn't have the requested value, use an alternative 'fallback' value in its place.
Each of the examples below make use of an injected PublishedValueFallback
. This is achieved by adding the following at the top of your Razor file:
This parameter is optional, but can make unit testing easier.
Fallback to Default Value
If a content page has a 'title' property, to fallback to use the 'Name' of the content item if the 'title' is not populated. Set the Fallback type to be Fallback.ToDefaultValue, and set the DefaultValue accordingly:
or to a specific value
Fallback to Ancestors
Look for a property value on the current page. If it doesn't exist look for the property value on the parent page. Then the parent's parent page and so on. This approach allows specifying 'global property values' all the way up the content tree. These values can be overridden in different sections or individual pages.
Fallback to Language
If working with variants - fallback to a different language value - if perhaps the value hasn't been populated yet for the current language:
Combining the Fallback options
Use Fallback.To() to 'combine' Fallback options.
The following would first look for a 'title' property on all ancestors, before defaulting to the current page's name:
Property Methods
There are a few helpful methods to help check if a property exists, has a value or is null.
.HasProperty(string propertyAlias)
Returns a boolean value representing if the IPublishedContent has a property with the specified alias.
.HasValue(string propertyAlias)
Returns a boolean value representing if the IPublishedContent property has had a value set.
It's possible to use 'Fallbacks' with HasValue:
Last updated