.net 如何从用户控件引用母版页内容控件?

.net 如何从用户控件引用母版页内容控件?,.net,asp.net,user-controls,master-pages,.net,Asp.net,User Controls,Master Pages,我有一个用户控件,我想把一些东西“注入”到母版页的头部。我尝试使用以下方法(母版页和用户控件mmarkup代码段) 母版页: <asp:ContentPlaceHolder ID="head" runat="server"> </asp:ContentPlaceHolder> <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> <link type="te

我有一个用户控件,我想把一些东西“注入”到母版页的头部。我尝试使用以下方法(母版页和用户控件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>

用户控件:

<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>

但这就产生了错误:

内容控件必须是内容页或 引用母版页的嵌套母版页

那么,如何在运行时从控件将内容放入母版页?

您不能

默认情况下,数据设计为从母版页流向用户页,而不是从母版页流向用户页


有关详细信息,请参阅和。

您可以通过母版页的公共方法访问母版页内容。因此,如果我以您的问题为例,您可以通过以下代码修改,在用户控件或页面的母版页中设置链接的href:

在母版页中将链接作为“普通内容”引入,并给他一个id,以便您可以从代码隐藏处访问它

<link id="link" type="text/css" rel="stylesheet" />
Master.LinksHref = "/Shared/Css/Navigation.css";
如果您想从页面访问它,可以添加MasterType指令

<%@ MasterType VirtualPath="~/Site.Master" %>
如果要从用户控件访问此命令,则不能使用MasterType指令,必须自己执行强制转换:

((MasterPageClassName)Page.master).LinksHref= "/Shared/Css/Navigation.css";