2009-11-29 141 views
0

我有動態加載控制到母版頁的ContentPlaceHolder中的問題。動態添加控制到母版頁

的的ContentPlaceHolder和用戶控件的路徑名被從數據庫加載並傳送到這個小代碼:

Control c = this.Page.LoadControl(uc-path-from-db);
this.Page.Master.FindControl(cph-name-from-db).Controls.Add(c);

當我運行它,我得到這個錯誤:

The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>).

什麼時我做錯了?

+0

你有在母版頁的元素的任何代碼塊(<% %>)? – Phaedrus 2009-11-29 02:05:30

+0

無標記。 當我搜索這個問題,我跑到帖子說,尋找頭元素的代碼塊,但我沒有任何。 – lopkiju 2009-11-29 02:13:39

回答

0

它沒有完全清除你的標記,但它告訴你,你不能在那裏添加控件,因爲你的一些標記包含一個<%...%>塊告訴ASP.NET執行任何在那裏創建你的標記。嘗試刪除您的<%...%>塊,它應該讓您添加控件。或者發佈您的標記以獲得更完整的答案。

+0

有趣的是,我沒有任何標記。 我剛剛添加了控件,編譯了項目,運行該項目,期望UserControl被添加而沒有任何數據並且得到了該錯誤。 我完全不解這個錯誤信息。 – lopkiju 2009-11-29 02:17:51

+0

因此,您的主頁,頁面或用戶控件中沒有代碼塊? – 2009-11-29 02:52:50

+0

我不知道如何回答。 我在頁面中看到了代碼塊,但是這似乎不會干擾加載控件,因爲加載與該代碼塊一起工作,我不太確定我做了什麼,因爲我做了很多試圖使其工作的東西。 謝謝。 – lopkiju 2009-11-29 14:04:53

0

根據您正在使用的Web項目的類型,您必須確保在您要加載的MasterPage上以及您正在加載的頁面上的UserControl上都有您的UserControl從。如果你有一個網站網站,而不是一個網絡應用程序工作它編譯每個頁面分爲它是在小組裝,除非它認爲在標記爲參考標記不引用用戶控件的程序集。

我不是這個100%,但它是值得一試。

+0

我正在使用Web應用程序,並從BaseClass中調用該代碼。 我試圖從默認頁面的page_load調用它,並加載,但沒有任何數據,即使我在控件中放置了一些文本。 – lopkiju 2009-11-29 02:34:38