2013-06-27 384 views
0

我有一個問題。我想在我的應用程序中設置母版頁。由於我有太多的aspx頁面,我不想去everypage並在其中添加asp:content標籤。我想要一些動態的方法,我可以查看我的頁面,將其複製到html /其他asp控件並將其添加到動態創建的內容模板中。 我知道如何動態創建內容模板。但不知道是否可以複製aspx頁面的html並將其添加到內容模板中。動態添加asp:內容到頁面

比方說,在我的aspx頁面的代碼隱藏中,在page_PreInit上,我添加了以下代碼。

base.AddContentTemplate("WebHeaderPH", new CompiledTemplateBuilder(new BuildTemplateMethod(this.getControl))); 

getControl是包含任何一個方法(HTML,文本或可以加載的用戶控件。)

這樣,我動態添加內容模板。

現在我的aspx頁面內容下面的代碼。

<span id="someid" runat="server">blah blah...</span> 

現在我想要的是,通過它的id獲取這個span標籤,並將其包裝在asp:content下。或者可能在上面的getControl方法中。

但把這個跨度頁,扔以下錯誤上,

內容控件必須是頂級的控制在內容頁或引用母版頁的嵌套母版頁。

要麼我必須把asp:content模板放在頁面上。但是如果我這樣做,那麼我不需要動態創建contentTemplate,也不需要將整個頁面留空,因爲我正在動態創建contentTemplate。在這兩種情況下,我必須編輯我所有的aspx頁面。

有沒有辦法獲取頁面的html並將其添加到內容模板而不需要編輯aspx頁面?

+0

我不這麼認爲,或者至少不是沒有編寫腳本來編輯你的aspx文件。無論如何,任何嘗試使用服務器代碼的嘗試都不是好主意。如果你有很多aspx頁面並且不使用masterpages,那麼這是一個設計錯誤,你應該嘗試用另一個不好的主意來修復它。 –

+0

在你寫這個問題的時候,你可能已經手動轉換了一打左右的文件。如果您擁有數百或數千頁,請考慮編寫自定義轉換工具,但不要在運行時嘗試轉換頁面。 – pseudocoder

+0

好的。謝謝。我將手動修改所有的aspx頁面。以前它是在1.1 .net框架中,所以沒有母版頁的概念。我們現在將其轉換爲4.0。 – Roshni

回答

0

恐怕你必須手動一步一步來。這確實是一個設計錯誤,但它不會花費你很長時間來改變它們。 我不幸也犯了同樣的錯誤,我通過手動編輯頁面來修復它。

+0

你是我第一個接受的答案。我在這裏真的笑了起來!謝謝! – LTKD