我错过了什么?
(开始咆哮:我正在使用登录系统做所有这些奇特的事情,并使用AJAX等动态添加/修改控件,但我不能改变f'n静态控件的属性!我甚至不能谷歌这样的简单的问题,没有找到别的东西!在过去,我不得不动态生成整个血腥的页面,以避免这个愚蠢的简单问题。结束咆哮。)
答案 0 :(得分:0)
Page.LoadControl()有两个重载,一个接受一个虚拟路径,另一个接受一个Type。 有时,当使用Type版本重载时,您会遇到这种行为。
如果可能,请尝试使用LoadControl的虚拟路径版本。
编辑:作为一个FYI,这是因为用户控件的实际类型不是您所期望的。 ASP.NET类型“包装”用户控件的类型。
答案 1 :(得分:0)
在分析页面执行顺序后我找到了一种方法( http://msdn.microsoft.com/en-us/library/ms178472.aspx)。
protected void Page_Init(object sender, EventArgs e)
{
literalGameName.Text = myGame.Name;
}
初始化在控件完成后发生,但在页面完成加载控件之后不会发生。
答案 2 :(得分:0)
我知道这是一个旧版本,但想要了解我如何解决我遇到的类似问题。我有一个带有asp:Panel的用户控件,我试图在Page_Load期间设置可见性,但控件是空的。然后我注意到我的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;
}
执行覆盖修复了问题。