如何从用户控件引用母版页?

时间:2009-01-06 14:15:22

标签: c# asp.net master-pages user-controls

我正在寻找一种方法(最好)从用户控件强力键入母版页,该控件位于使用母版页的内容页面中。

可悲的是,你不能在用户控件中使用它:

<%@ MasterType VirtualPath="~/Masters/Whatever.master" %>

我正在尝试从用户控件访问母版页的属性,而不是必须将属性从母版页传递到内容页面到用户控件,因为多个内容页面使用相同的用户控件。一个变化,一个地方诸如此类。

4 个答案:

答案 0 :(得分:18)

尝试Page.Master

Whatever whatev = (Whatever)Page.Master;

您必须确保在文件顶部添加正确的using语句,或者内联主页类型。

一个潜在的问题是,如果此控件由主页不是同一类型的其他页面使用。这只会在运行时被捕获。

答案 1 :(得分:0)

您是否在usercontrol上尝试过Page.FindControl(“name”)?

答案 2 :(得分:0)

我发现的最好的方法实际上是构建一个基于UserControl的自定义类,给它一个带有get访问器的Master属性,它通过this.Page.Parent运行直到它停止遇到母版页(如果您正在嵌套,则此步骤是不必要的),然后将该Web控件作为您要使用的母版页的类型返回。然后,在添加新用户控件时,将其基类更改为自定义类的名称。可以访问.Master属性并将其正确转换为您希望它使用的母版页。

答案 3 :(得分:0)

在VB中,我要做的就是更改此内容:

Dim lAuthLevel As Integer = Master.MasterContact.AuthenticationLevel

对此:

Dim lAuthLevel As Integer = CType(Me.Page.Master, main).MasterContact.AuthenticationLevel

因此,所有 Master 的引用都将成为 Ctype(Me.Page.Master,typeofMaster)

在这种情况下,“ main”一词在哪里-从母版页顶部的声明中获取。例如

在这种情况下是“主要”:)