2011-11-16 54 views
0

在Sitecore中,我創建了一個自定義字段(通過此配方:http://sdn.sitecore.net/Articles/API/Creating%20a%20Composite%20Custom%20Field/Adding%20a%20Custom%20Field%20to%20Sitecore%20Client.aspx) 該字段用於內容編輯器。 自定義字段附有一個菜單項(小字體在字段上方呈現) 自定義字段按預期方式工作,並且menuitem按照自己的意願掛鉤到自定義字段類中的代碼中。但是,我需要爲menuitem實現的邏輯要求我在內容編輯器中獲取用戶正在編輯的項目的引用。如何在Sitecore中的自定義字段中獲取對當前編輯項目的引用

然而,出乎我的意料,這並不工作:

Sitecore.Context.Item

這不給我用戶當前正在編輯的項目,而是「內容編輯器」項,這總是一樣的。 我會認爲這只是API中某個對象的屬性,但我找不到它。

回答

2

如果您在下面這篇文章,那麼你將會對你的控件定義的屬性..

public string ItemID { get; set;} 

..這將與ID爲填充您正在編輯的項目。您應該能夠解決由本ID的Item對象使用類似:

Sitecore.Data.Database.GetDatabase("master").GetItem(ItemID) 

..如果你只是只爲你正在編輯您可以使用base.Value場的字段的值。

0

要問這個問題的最佳地點是developer forum,你應該在那裏得到很好的答覆。

雖然,看看Sitecore的代碼,它看起來像這可能是你想要的。嘗試從ViewState中閱讀它:

public string ItemID 
{ 
    get 
    { 
     return base.GetViewStateString("ItemID"); 
    } 
    set 
    { 
     Assert.ArgumentNotNullOrEmpty(value, "value"); 
     base.SetViewStateString("ItemID", value); 
    } 
} 
0

斯蒂芬波普是正確的,雖然有更多的屬性,你可以'自動'從Sitecore檢索。一些屬性,如ItemID通過反射放在場上。還有可用於您的自定義控件的ItemVersionSource

如果你intereseted,採取偷看類Sitecore.Shell.Applications.ContentEditor.EditorFormatter內,特別是其方法SetProperties

ReflectionUtil.SetProperty(editor, "ItemID", field.ItemField.Item.ID.ToString()); 
ReflectionUtil.SetProperty(editor, "ItemVersion", field.ItemField.Item.Version.ToString()); 
相關問題