【问题标题】:Get current Item from Custom Field in Sitecore 6.5从 Sitecore 6.5 中的自定义字段获取当前项目
【发布时间】:2012-09-07 19:06:41
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: sitecore custom-fields


    【解决方案1】:

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

    通过反射(!?)此方法检查您的字段编辑器是否具有属性“ItemID”、“ItemVersion”、“ItemLanguage”...。sigh

    好的,通过添加公共属性“ItemID”,我们可以编辑项目

    【讨论】:

      【解决方案2】:

      如果我没记错的话,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 填充它。

      【讨论】:

      • 抱歉,我需要更新我的问题,我继承自 Sitecore.Shell.Applications.ContentEditor.File - 它的继承链中没有公共字符串 ItemID,我可以使用ILSpy。
      • 从基础 Sitecore.Web.UI.HtmlControls.Control 继承并从那里构建我需要的所有功能似乎有效。谢谢!!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多