2011-08-15 131 views
4

我有一個用戶控件,我想'注入'一個母版頁的頭部。我曾嘗試使用下面的方法(母版頁和用戶控制mmarkup段)...如何從用戶控件引用主頁面內容控件?

母版:

<asp:ContentPlaceHolder ID="head" runat="server"> 
</asp:ContentPlaceHolder> 

用戶控制:

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> 
    <link type="text/css" rel="stylesheet" href="/Shared/Css/Navigation.css" /> 
</asp:Content> 

但是,讓錯誤:

Content controls have to be top-level controls in a content page or a nested master page that references a master page.

那麼如何在運行時從控件中將內容放入主頁面?

回答

3

您可以通過母版頁的公共方法訪問母版頁內容。因此,如果我以您的問題爲例,您可以在用戶控件或頁面的主頁面中設置鏈接的href,並對您的代碼進行以下修改:

在主頁面中將鏈接作爲「普通內容」引入並給他一個ID,以便你可以從後面的代碼訪問它。

<link id="link" type="text/css" rel="stylesheet" /> 

將屬性添加到設置爲href的主頁面。

public string LinksHref 
{ 
    get { return link.Href; } 
    set { link.Href = value; } 
} 

如果您想從頁面訪問此頁面,您可以添加一個MasterType指令。

<%@ MasterType VirtualPath="~/Site.Master" %> 

變化背後的控制代碼的性能。

Master.LinksHref = "/Shared/Css/Navigation.css"; 

如果你想從一個用戶控件訪問此,您不能使用中的MasterType指令,並有自己做鑄造:

((MasterPageClassName)Page.master).LinksHref= "/Shared/Css/Navigation.css"; 
相關問題