Вызывая node.NiceUrl дает мне # в Umbraco - PullRequest
5 голосов
/ 29 апреля 2011

Делая проект в Umbraco, я столкнулся с проблемами в одном случае, когда при вызове node.NiceUrl в результате я получаю #. Что странно, так это то, что если я отлаживаю его каким-то образом, он превращается в правильный URL.

var pages = Pages.Select((item, index) => new
{
    Url = item.NiceUrl,
    Selected = item.Id == currentPage.Id,
    Index = index
}).ToList();

Где страницы получены от:

CurrentPage.Parent.ChildrenAsList

Ответы [ 3 ]

3 голосов
/ 18 июня 2013

Я столкнулся с этой ошибкой, и это потому, что идентификатор принадлежал узлу мультимедиа.

Мультимедиа обрабатывается по-разному по отношению к другому контенту, и нет простого способа получить 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;
}
3 голосов
/ 29 апреля 2011

Если я так делаю, это работает, но я не знаю почему.

 Url = new Node(item.Id).NiceUrl,
2 голосов
/ 30 апреля 2011

Попробуйте вот так

    Url = umbraco.library.NiceUrl(Item.Id);
...