EPi服务器:动态填充在filessummary .config中定义的字段

本文关键字:config 定义 字段 filessummary 服务器 动态 填充 EPi | 更新日期: 2023-09-27 18:04:31

所以我最近发现,您可以通过编辑FileSummary.config文件来更改定义EPi Server的文件管理系统中上传的每个文件的元数据的字段。

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

编辑)我看到可以在那里定义JavaScript,所以这可能是另一种选择。

EPi服务器:动态填充在filessummary .config中定义的字段

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

您将在AdapterMappings中注册您的适配器。浏览器文件如下:

<browsers>
  <browser refID="Default">
    <controlAdapters>
      ...
      <adapter controlType="EPiServer.UI.Hosting.EditCustomFileSummary"
               adapterType="MyLibrary.Adapters.FileSummaryAdapter, MyLibrary" />
    </controlAdapters>
  </browser>
</browsers>

然后你需要创建一个从ControlAdapter

派生的控件类
public class FileSummaryAdapter : ControlAdapter 
{
}

在这里你可以创建和添加你自己的控件到'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 '控件触发的保存事件,以便将自定义字段保存为文件摘要属性

中的字典项。
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;
}

添加控件的方式和内容当然可以由适合您的场景的任何方法派生。