我收到“错误呈现控件”错误,仅当我以设计模式将控件放置在 Web 窗体上时,如果我运行该页面,控件将正确显示。
上面的语句并不重要,发生这个错误是因为返回的工具栏对象为空l。
调试后,问题出在从 CeateChildControls() 调用的函数中:
public static ToolBars LoadToolbarsFromConfigFile()
{
ToolBars toolbars;
Assembly executingAssembly = Assembly.GetExecutingAssembly();
string resource = "Editor.ConfigFiles.ToolBars.xml";
using (Stream stream = executingAssembly.GetManifestResourceStream(resource))
{
XmlSerializer serializer = new XmlSerializer(typeof(ToolBars));
toolbars = (serializer.Deserialize(stream)) as ToolBars;
}
return toolbars;
}
工具栏返回 null!(在设计模式下)
但是当我运行页面时,工具栏会返回适当的数据。
如果您需要有关我的代码的更多信息,请询问。
更新:
它必须与程序集有关,如果我使用文件流而不是指定文件,它确实有效。
另一个更新:
我稍微修改了我的代码,并添加了“数据集”用于测试目的:
using (DataSet ds = new DataSet())
{
ds.ReadXml(typeof(TheEditor).Assembly.GetManifestResourceStream("Editor.ConfigFiles.ToolBars.xml"));
//show message box to see if it works
System.Windows.Forms.MessageBox.Show(ds.Tables.Count.ToString());
}
我注意到的另一件事是,当我将控件添加到新的网站项目时,以上所有内容都会发生,但是如果我将控件项目的调试属性设置为启动外部程序(我启动 Visual Studio),然后我创建一个新项目并添加控制一切正常。