Я столкнулся с этой ошибкой, и это потому, что идентификатор принадлежал узлу мультимедиа.
Мультимедиа обрабатывается по-разному по отношению к другому контенту, и нет простого способа получить URL, потому что различные типы мультимедиа хранят URL по-разному в зависимости от контекста . Вот почему функция NiceUrl не работает для медиа (по словам разработчиков umbraco).
В моем конкретном сценарии использовались изображения, которые были выбраны с помощью средства выбора медиафайлов. Я получил URL через следующий код. Я завернул его в метод расширения, чтобы вы могли использовать его из шаблона удобным способом.
public static string GetMediaPropertyUrl(this IPublishedContent thisContent, string alias, UmbracoHelper umbracoHelper = null)
{
string url = "";
if (umbracoHelper == null)
umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
var property = thisContent.GetProperty(alias);
string nodeID = property != null ? property.Value.ToString() : "";
if (!string.IsNullOrWhiteSpace(nodeID))
{
//get the media via the umbraco helper
var media = umbracoHelper.TypedMedia(nodeID);
//if we got the media, return the url property
if (media != null)
url = media.Url;
}
return url;
}