[英]ASP.NET: Controls are null when I try to change a property
我到底想念什么?
(开始:我正在使用登录系统来做所有这些花哨的事情,并使用AJAX来动态地动态添加/修改控件,等等,但是我无法更改f'n静态控件的属性!我什至无法使用Google这样的控件一个简单的问题,却找不到其他东西!过去,我不得不动态生成整个血腥的页面,以避免出现这个愚蠢的简单问题。
我知道这是一个古老的问题,但想了解一下我如何解决类似的问题。 我有一个用户控件,上面带有一个asp:Panel,试图在Page_Load期间设置可见性,但是控件显示为null。 然后,我注意到我的Page_Load定义如下所示:
protected void Page_Load(object sender, EventArgs e)
{
_myControl.visible = true;
}
实际上,我需要定义如下所示:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
_myControl.visible = true;
}
进行覆盖可解决此问题。
Page.LoadControl()有两个重载,一个重载接受虚拟路径,另一个重载类型。 有时,当使用Type版本重载时,您会得到这种行为。
如果可能,尝试使用LoadControl的虚拟路径版本。
编辑:仅供参考,这是因为用户控件的实际类型不是您期望的那样。 ASP.NET可以“包装”用户控件的类型。
在分析页面执行顺序后,我想出了一种方法( http://msdn.microsoft.com/en-us/library/ms178472.aspx )。
protected void Page_Init(object sender, EventArgs e)
{
literalGameName.Text = myGame.Name;
}
初始化是在控件完成后发生的,而不是在页面加载完控件后完成的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.