所以我最近发现,您可以通过编辑FileSummary.config
文件来更改定义EPi Server的文件管理系统中上传的每个文件的元数据的字段。
在这个FileSummary.config
文件中,我可以用XForms定义静态地定义字段,但是是否有可能动态地填充字段,例如来自页面或定义的站点类别的数据?
编辑)我看到可以在那里定义JavaScript,所以这可能是另一种选择。
一种方法是使用控件适配器向文件摘要编辑/添加控件
您将在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;
}
添加控件的方式和内容当然可以由适合您的场景的任何方法派生。