ASP.NET检查控件是否位于正确的页面上
本文关键字:于正确 NET 检查 控件 是否 ASP | 更新日期: 2023-09-27 18:27:16
我正在尝试检查控件(指用户自定义控件*ascx
)是否放在正确的页面上,并且我遇到了错误-如何解决
控制Page_Load
:
protected void Page_Load(object sender, EventArgs e)
{
ddl.enable = (Page as Online.MyPage);
}
错误:
Object reference not set to an instance of an object.
但如果我们从页面生命周期来看,这是可能的:
Page: PreInit
Control: Init
Page: Init
Page: InitComplete
Page: PreLoad
Page: Load
Control: Load
ThanX
UDP:
我认为可能是这样的,但我认为这是一种错误的方式。
var v = Page as Online.MyPage;
if (v != null)
ddl.enable = v;
UPD:
ddl.enable-表示下拉列表
DropDownList ddList = new DropDownList();
ddList.Enabled = y;
我不想通过属性来委派父页操作控件的权限,只想跨控件解决这个问题。
Page as Online.MyPage
将返回null,如果Page不能被强制转换为Online.MyPage。请参阅此处了解原因。
您想要做的是查看Page
对象的类型是否继承了您的自定义Online.MyPage
类。你可以这样做:
ddl.Enabled = Page.GetType().IsSubclassOf(typeof(Online.MyPage))
更新:
问题中给定的代码示例显示ddl.enable不是bool
,而是某种类型的object
。我的假设是,意图是基于ddl.enable
的值来启用或禁用某些东西,因此我假设ddl.enable
实际上被视为bool
,而不是对象。如果ddl.enable
是object类型,那么由于bool
也是object
,因此代码仍将编译。代码是否会毫无例外地执行将完全取决于使用ddl.enable
所做的操作。
无论哪种情况,Page.GetType().IsSubclassOf(typeof(Online.MyPage))
都可能是检测控件是否在特定类型页面上的最佳方式。
更新2:
既然ddl
已经被澄清为DropDownList
控件,我已经更新了我的代码片段,以便它基于Page类型启用或禁用DropDownList
控件。