从Sitecore 6.5中的Custom Field获取当前项目

时间:2012-09-07 19:06:41

标签: sitecore custom-fields

我正在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不在视图状态中,也不是由管道填充)。

谢谢!

2 个答案:

答案 0 :(得分:1)

在几个小时内遇到同样的问题,我最终反编译了EditorFormatter,发现这个类有一个名为SetProperties的方法。

通过反射(!?),此方法检查您的字段编辑器是否具有属性" ItemID"," ItemVersion"," ItemLanguage" .... 叹息

好的,所以通过添加公共财产' ItemID'我们正在编辑项目

答案 1 :(得分:0)

如果我没记错的话,Sitecore.Data.Fields.FileField表示Sitecore API中字段的数据。例如,您可以通过投射项目的字段来使用它来检索MediaItemSrc,如下所示:

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填充它。