2

サイトコア 6.5 でカスタム フィールドを構築しています。このフィールドは、フィールドが存在するアイテムに基づいて新しいアイテムを生成し (アイテムの名前を使用してフォルダーを生成します)、フィールドが使用されているアイテムを参照する必要があります。これにアクセスするにはどうすればよいですか?

私のカスタム フィールドは、サイトコアの Sitecore.Shell.Applications.ContentEditor.File クラスを継承しています。

私の質問は、次の場所にある質問に似ています: How to get a reference to the currentlyedited item when inside a custom field in Sitecore

ただし、sitecore の以前のバージョンに関する問題があり、解決策が機能していないようです (ItemID がビューステートになく、パイプラインによって満たされていません)。

ありがとうございました!

4

2 に答える 2

2

数時間同じ問題に苦しんで、最終的に EditorFormatter を逆コンパイルしたところ、このクラスに SetProperties というメソッドがあることがわかりました。

リフレクション (!?) により、このメソッドは、フィールド エディターに "ItemID"、"ItemVersion"、"ItemLanguage" のプロパティがあるかどうかを確認します ....ため息

わかりましたので、パブリック プロパティ 'ItemID' を追加することで、アイテムが編集されます。

于 2013-03-19T15:37:42.953 に答える
0

私が間違っていなければSitecore.Data.Fields.FileField、Sitecore API でのフィールドのデータの表現です。たとえば、アイテムのフィールドを次のようにキャストしてMediaItemorを取得するために使用します。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 を入力する必要があります。

于 2012-09-07T21:57:45.720 に答える