2011-04-29 37 views
5

在Umbraco中做一個項目,並且在調用node.NiceUrl時遇到了一個問題,我得到#作爲結果。奇怪的是,如果我以某種方式調試它解析爲正確的URL。調用node.NiceUrl在Umbraco中給我#

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

當網頁被索取:

CurrentPage.Parent.ChildrenAsList 

回答

3

如果我這樣做,它的工作原理,但我不知道爲什麼。

Url = new Node(item.Id).NiceUrl, 
2

嘗試這樣

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

庫還具有用於與域名檢索完整的URL的方法的,有用的向用戶發送電子郵件時: 串termsUrl = umbraco.library.NiceUrlWithDomain(1267); – 2012-12-18 16:26:29

3

我遇到這個錯誤,這是因爲ID屬於媒體節點。

媒體對其他內容的處理方式不同,並且沒有簡單的方法獲取網址,因爲different types of media store the url in different ways depending on context。這就是爲什麼NiceUrl功能不適用於媒體(根據umbraco開發人員)。

我的特定場景是使用已使用媒體選擇器選擇的圖像。我通過下面的代碼獲得了網址。我用擴展方法將其包裝起來,以便您可以方便地從模板中使用它。

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; 
}