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

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

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

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

有帮助吗?

解决方案

尝试 Page.Master

Whatever whatev = (Whatever)Page.Master;

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

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

其他提示

您是否在usercontrol上尝试过Page.FindControl(&quot; names&quot;)?

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

在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”一词在哪里? - 从母版页顶部的声明中获取。 e.g。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top