因此,我为sitecore创建了一个小型自定义对话框应用程序,该应用程序通过功能区按钮调用,该按钮会触发一个命令,该命令又会触发我的自定义控件。
我的命令(用于触发打开对话框触发器):
var uri = UIUtil.GetUri("control:LanguageCopyModule");
var id = context.Items[0].ID.ToString();
var la = context.Items[0].Language;
var url = string.Format("{0}&id={1}&la={2}", uri, id, la.Name);
SheerResponse.ShowModalDialog(url);
它在弹出窗口中生成的URL:
http://mydomain/sitecore/shell/default.aspx?xmlcontrol=LanguageCopyModule&id={E67AD356-3999-4D4C-ACE4-C570EFD1FBE0}&la=en-
到目前为止,一切都很好,但现在当它打开我的xml控制窗口时,它只是保持为空。
这是xml:背后的代码
<control xmlns:def="Definition" xmlns="http://schemas.sitecore.net/Visual-Studio-Intellisense">
<LanguageCopyModule>
<FormDialog Icon="Applications/16x16/paste.png" Header="Language Copy Module" Text="Copy field values between different languages." OKButton="Copy" CancelButton="Cancel">
<CodeBeside Type="MyAssembly.Modules.LanguageCopyModule.LanguageCopyModule,MyAssembly.Modules"/>
<GridPanel Columns="2">
<GridPanel.ColumnStyles>
<Column Width="70%" />
<Column Width="30%" />
</GridPanel.ColumnStyles>
<GridPanel.RowStyles>
<Row Height="100%" />
</GridPanel.RowStyles>
<!-- Fields -->
<FlowPanel>
<Border BorderThickness="1" BorderBrush="black">
<Text>Text</Text>
</Border>
</FlowPanel>
<!-- Languages -->
<FlowPanel>
<Border BorderThickness="1" BorderBrush="black">
<Button>Button</Button>
</Border>
</FlowPanel>
</GridPanel>
</FormDialog>
</LanguageCopyModule>
</control>
关于为什么它仍然是空的,有什么想法吗?找不到什么文件,可能是我遗漏了什么。
感谢您的帮助!
这是由web.config中的<controlSources>
元素管理的。您可以将XML控件放在其中提到的任何文件夹中,也可以添加另一个控件源。请注意,有一个特殊的"覆盖"文件夹可用于此目的。如果您仍然需要添加自己的控制源,请记住,从Sitecore 6.0,它可以在可插入的配置中完成(有官方的Sitecore文档,还有几篇博客文章)。
我发现了问题:.xml文件需要位于文件系统中/sitecore/shell下的某个位置。