1 つのアプローチは、コントロール アダプターを使用して、いくつかのコントロールをファイル サマリー編集/追加コントロールに追加することです。
次のように、アダプターを AdapterMappings.browser ファイルに登録します。
<browsers>
<browser refID="Default">
<controlAdapters>
...
<adapter controlType="EPiServer.UI.Hosting.EditCustomFileSummary"
adapterType="MyLibrary.Adapters.FileSummaryAdapter, MyLibrary" />
</controlAdapters>
</browser>
</browsers>
次に、ControlAdapter から派生するコントロール クラスを作成する必要があります。
public class FileSummaryAdapter : ControlAdapter
{
}
ここで、独自のコントロールを作成して、「ラップされた」EditCustomFileSummary に追加できます。これは、以前にタグ コントロールをファイル サマリー ダイアログに追加するために使用した例です。
// Override the OnInit method to ensure our controls are added to the edit control
protected override void OnInit(EventArgs e)
{
// Some code omitted for clarity
...
// Reference our edit controls
EditControl = Control as EditCustomFileSummary;
UnifiedFile selectedFile = EditControl.SelectedFile;
SaveButton = EditControl.FindControl("SaveButton") as ToolButton;
// Hook into the save event so we can save the input from our custom controls
SaveButton.Click += OnSaveButtonClick;
...
_tagsControl.Text = selectedFile.Summary.Dictionary["Tags"].ToString();
...
EditControl.Controls.Add(_tagsControl);
}
次に、カスタム フィールドをファイル サマリー プロパティのディクショナリ アイテムとして保存するために、サマリー ダイアログの「保存」コントロールによってトリガーされる保存イベントにフックすることができます。
public void OnSaveButtonClick(object sender, EventArgs e)
{
// Get a reference to the current file and the summary data
UnifiedFile selectedFile = EditControl.SelectedFile;
// Get the tags added
selectedFile.Summary.Dictionary["Tags"] = _tagsControl.Text;
}
どのように、どのようなコントロールを追加するかは、もちろん、シナリオに適した方法で導出できます。