2012-05-16 97 views
1

我正尝试检索我正在构建的自定义Sitecore字段上的当前字段名称。换句话说,如果我的自定义字段类型应用于名为“元标题”的字段,我需要能够检索该名称。如何在自定义字段类型中获取当前字段名称

This tutorial意味着你所要做的就是创建一个名为FieldName的公共自动属性,剩下的就是历史......可悲的是,它看起来不起作用(FieldName总是空或空)。

任何想法?我试过从Sitecore.Web.UI.HtmlControls.ControlSitecore.Shell.Applications.ContentEditor.Text继承而没有运气。

+0

你想用自定义字段来做什么,需要你知道字段名称? – techphoria414

+0

我的字段通过搜索Sitecore系统索引中的相似命名项目来检查可能的重复项目标题。我需要知道字段名称才能构建Lucene查询。 –

+0

当你在控件中使用jquery操作(在我的情况下隐藏和取消隐藏)和一个项目中的多个字段时 - 当你不考虑名称时隐藏和取消隐藏会影响所有字段,这也很有用。 –

回答

2

通过创建FieldID属性,您应该可以访问控件中的Field ID。这应该等同于定义该字段的模板字段项目的ID。因此,你可以通过

var fieldItem = Sitecore.Context.ContentDatabase.GetItem(this.FieldID); 
var fieldName = fieldItem.Name; 

获取字段的名称Sitecore的可以在你的控制设置可以在Sitecore.Shell.Applications.ContentEditor.EditorFormatter.SetProperties找到特性的完整列表。

ReflectionUtil.SetProperty(editor, "ID", field.ControlID); 
ReflectionUtil.SetProperty(editor, "ItemID", field.ItemField.Item.ID.ToString()); 
ReflectionUtil.SetProperty(editor, "ItemVersion", field.ItemField.Item.Version.ToString()); 
ReflectionUtil.SetProperty(editor, "ItemLanguage", field.ItemField.Item.Language.ToString()); 
ReflectionUtil.SetProperty(editor, "FieldID", field.ItemField.ID.ToString()); 
ReflectionUtil.SetProperty(editor, "Source", field.ItemField.Source); 
ReflectionUtil.SetProperty(editor, "ReadOnly", readOnly); 
ReflectionUtil.SetProperty(editor, "Disabled", readOnly); 
+0

谢谢,但它看起来ID是指Web控件的ID(例如:FIELD23212622),而不是模板字段项的ID。 Humm ... –

+0

对不起,追踪了解决方案并修复了我的答案。 – techphoria414

+0

谢谢,我会试一试。我只是意识到你是谁!哈哈。昨天在页面编辑器上的精彩演示 –

相关问题