0

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

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

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

4

1 回答 1

0

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

您将在 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;
}

您添加的方式和控件当然可以通过适用于您的场景的任何方法得出。

于 2014-05-22T12:44:50.460 回答