我得到「錯誤呈現控制」錯誤,只有當我將控件放置在設計模式下的Web窗體上時,如果我運行頁面,控件顯示正確。
上面的語句並不重要,發生此錯誤是因爲返回的工具欄對象是nul l。CompositeControl和XML反序列化在設計時錯誤
經過調試,問題是在是從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),並在那裏創建一個新項目並添加控件一切正常。
你能證實GetManifestResourceStream在設計時返回一個值嗎? – 2009-12-01 11:24:10
@Programming Hero,是的,它返回{System.IO.UnmanagedMemoryStream},和運行時一樣。 – markiz 2009-12-01 12:02:18