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

问题描述 投票:13回答:4

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

遗憾的是,你不能在用户控件中使用它:

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

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

c# asp.net master-pages user-controls
4个回答
18
投票

试试Page.Master

Whatever whatev = (Whatever)Page.Master;

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

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


0
投票

你在usercontrol上试过Page.FindControl(“name”)吗?


0
投票

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


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” - 从母版页顶部的声明中获取。例如

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

© www.soinside.com 2019 - 2024. All rights reserved.