2010-02-01 62 views
0

我有一個頁面的網站。我有4頁所有頁面都使用的主頁面。每個頁面使用不同的CSS和JavaScript頭部標籤內部。我想通過調用引用數據庫表的類來添加標題,元描述和元關鍵字標記。但是,我無法找到一種方法將頁面或HthmlHead對象傳遞到類中,而不會引發錯誤。我曾嘗試做從一個類中向一個HtmlHead對象添加多個元素

HtmlHead head = Page.Header; 
Page.Controls.Remove(Page.FindControl("HeadElement")); 
Page.FindControl("HtmlElement").Controls.AddAt(0,HeaderText.getHeaderText(head, Request.Url.AbsolutePath)); 

Page = p2 
Page = HeaderText.getHeaderText(p2, Request.Url.AbsolutePath)); 

在這兩種情況下,我改變了我的班HeaderText.getHeaderText返回取決於我在做什麼的頁面或HtmlHead類型。我設置了類看起來像這樣:

public class HeaderText 
    { 
     private HeaderText() { } 

     public static HtmlHead getHeaderText(HtmlHead head, String URL) 

有沒有更好的或者更簡單的方法來做到這一點?

+0

我回答了類似的問題。讓我知道如果這有助於http://stackoverflow.com/questions/2146092/is-there-a-system-web-ui-clientscriptmanager-method-that-registers-scripts-inside/2146871#2146871 – hunter 2010-02-01 18:32:08

回答

1

你可以嘗試這兩個建議之一:

1)讓你的母版頁都有其存在做了標記的內HeadContentPlaceHolder不RUNAT =「服務器」屬性。然後你可以在閒暇時操縱這些內容。

<head> 
    <link ....> 
    <script....> 
    <meta......> 
    <asp:ContentPlaceHolder runat="server" ID="headContentPlaceHolder"></asp:ContentPlaceHolder> 
</head> 

您也可以使用Page.Title從每一頁

2)輕鬆設置標題上的每個內容頁使用的MasterType參考

<%@ MasterType TypeName="My.App.MasterPage" %> 

所以,如果你有您的主頁面類中的「SetHeaderElements」方法,您可以從每個內容頁面調用它們,該頁面具有該MasterType定義的

Page.Master.SetHeaderElements(meta, css, js); 

您也可以嘗試,以避免在每個由有PageBase類返回你的母版頁這樣

public class PageBase : Page 
{ 
    public IMasterPage MasterPage { get { return Page.Master as IMasterPage; }} 
} 

內容網頁上的代碼,然後創建與SetHeaderElements)的IMasterPage接口(方法和讓每個MasterPage類都實現這個接口。

相關問題