13

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

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

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

我正在尝试从用户控件访问母版页的属性,并且不想将属性从母版页传递到内容页到用户控件,因为多个内容页使用相同的用户控件。一个变化,一个地方什么的。

4

4 回答 4

18

试试Page.Master

Whatever whatev = (Whatever)Page.Master;

您必须确保将正确的using语句添加到文件顶部,或限定母版页类型内联。

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

于 2009-01-06T14:24:05.377 回答
0

您是否在用户控件上尝试过 Page.FindControl("name") ?

于 2009-01-06T14:23:08.093 回答
0

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

于 2010-01-25T16:58:30.390 回答
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)

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

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

于 2019-02-17T07:43:08.013 回答