2015-10-19 56 views
1

當我使用玻璃映射的SitecoreContext().GetItem<Sitecore.Data.Items.Item>(ItemPath)它工作正常,但只要我用它與TDS +玻璃產生我的定製機型,它返回nullSitecore的玻璃映射的GetItem <TypeName>(itemPath)自定義類型轉換時返回null

我的代碼如下:

NavigationHelper.cs

public class NavigationHelper 
{ 
    public static int GetChildCount() 
    { 
     var context = new SitecoreContext(); 
     string g = "/sitecore/content/home/Site Settings/Top Navigation Items"; 

     var t = context.GetItem<Models.sitecore.templates.Navigation.Navigation_Item_Folder>(g); 
     var v = context.GetItem<Items.Item>(g); 
     // t is always null, but v always finds the item correctly. 
     return t.Children.Count(); 
    } 
} 

Models.sitecore.templates.Navigation.Navigation_Item_Folder是玻璃和TDS生成的模型,如下:

/// <summary> 
/// Navigation_Item_Folder 
/// <para></para> 
/// <para>Path: /sitecore/templates/Navigation/Navigation Item Folder</para>  
/// <para>ID: c0f00c6b-145e-47f2-9427-57df58a612f1</para> 
/// </summary> 
[SitecoreType(TemplateId=INavigation_Item_FolderConstants.TemplateIdString)] //, Cachable = true 
public partial class Navigation_Item_Folder : GlassBase, INavigation_Item_Folder 
{ 

} 

這只是一個文件夾,所以它沒有字段。我試圖擴展這個部分類以包含一個標題字段,但是這並沒有解決問題。

我已經試過這裏的步驟:Sitecore Glass mapper GetItem<TypeName>(guid) always return null但他們沒有幫助。

+0

Sitecore API將返回一個Item對象,如果它存在但Glass只會返回對象,如果它也有當前語言的任何版本。你可以檢查v.Versions是否有。我相信v4有一個配置設置用於修改行爲。 – RvanDalen

回答

2

你可以試試這個GUID爲{C0F00C6B-145E-47F2-9427-57DF58A612F1}?我發現標準Sitecore查詢在通過模板ID查找項目時遇到了區分大小寫問題。

+0

我認爲這是問題。我們增加了一個'.ToUpper()'在'xxxxxConstants'類部分的'TemplateIdString'領域的'.tt'文件。如果您使用'glassv3item.tt',則在99行左右。 –

相關問題