我正在sitecore 6.5中构建自定义字段。此字段将根据字段所在的项目生成新项目(它使用项目的名称生成文件夹),我需要引用正在使用该字段的项目。我如何获得此权限?
我的自定义字段继承自sitecore Sitecore.Shell.Applications.ContentEditor.File类,如果这有用的话。
我的问题类似于此处的问题:How to get a reference to the currently edited item when inside a custom field in Sitecore
然而,问题出现在以前版本的sitecore上,并且解决方案似乎不再起作用(ItemID不在视图状态中,也不是由管道填充)。
谢谢!
答案 0 :(得分:1)
在几个小时内遇到同样的问题,我最终反编译了EditorFormatter,发现这个类有一个名为SetProperties的方法。
通过反射(!?),此方法检查您的字段编辑器是否具有属性" ItemID"," ItemVersion"," ItemLanguage" .... 叹息
好的,所以通过添加公共财产' ItemID'我们正在编辑项目
答案 1 :(得分:0)
如果我没记错的话,Sitecore.Data.Fields.FileField
表示Sitecore API中字段的数据。例如,您可以通过投射项目的字段来使用它来检索MediaItem
或Src
,如下所示:
var fieldSrc = ((FileField)Sitecore.Context.Item.Fields["My File Field"]).Src;
我认为它不打算用作Sitecore客户端中的自定义字段。尝试继承Sitecore.Shell.Applications.ContentEditor.File
或只是继续Sitecore.Web.UI.HtmlControls.Control
。只要您定义了public string ItemID { get; set; }
属性,Sitecore就应该使用当前商品ID填充它。