C# EPi服务器:动态填充FileSummary.config中定义的字段

C# EPi服务器:动态填充FileSummary.config中定义的字段,c#,.net,xml,episerver,episerver-6,C#,.net,Xml,Episerver,Episerver 6,因此,我最近发现,只需编辑FileSummary.config文件,就可以更改为EPi服务器的文件管理系统中上载的每个文件定义元数据的字段 在这个FileSummary.config文件中,我可以使用XForms定义静态地定义字段,但是是否可以使用例如来自页面或定义的站点类别的数据动态地填充字段 编辑)我认为可以在其中定义JavaScript,这可能是一种替代方法。一种方法是使用控件适配器向文件摘要编辑/添加控件添加一些控件 您可以在AdapterMappings.browser文件中注册适配器

因此,我最近发现,只需编辑
FileSummary.config
文件,就可以更改为EPi服务器的文件管理系统中上载的每个文件定义元数据的字段

在这个
FileSummary.config
文件中,我可以使用XForms定义静态地定义字段,但是是否可以使用例如来自页面或定义的站点类别的数据动态地填充字段


编辑)我认为可以在其中定义JavaScript,这可能是一种替代方法。

一种方法是使用控件适配器向文件摘要编辑/添加控件添加一些控件

您可以在AdapterMappings.browser文件中注册适配器,如下所示:

<browsers>
  <browser refID="Default">
    <controlAdapters>
      ...
      <adapter controlType="EPiServer.UI.Hosting.EditCustomFileSummary"
               adapterType="MyLibrary.Adapters.FileSummaryAdapter, MyLibrary" />
    </controlAdapters>
  </browser>
</browsers>
在这里,您可以创建自己的控件并将其添加到“wrapped”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);
}
然后,您将能够钩住由摘要对话框中的“save”控件触发的save事件,以便将自定义字段保存为files summary属性上的字典项

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;
}

当然,您添加控件的方式和内容可以通过适用于您的场景的任何方法派生

这看起来很有希望!当我们开始这个项目时,我会回来找你
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;
}