我使用LoadControl(type, Params)
时,有一个问题。让我来解释......Asp.net用户控件LoadControl问题
我有一个超级简单的用户控件(ASCX)
<%@ Control Language="C#" AutoEventWireup="True" Inherits="ErrorDisplay" Codebehind="ErrorDisplay.ascx.cs" EnableViewState="false" %>
<asp:Label runat="server" ID="lblTitle" />
<asp:Label runat="server" ID="lblDescription" />
与代码(C#)的背后:
public partial class ErrorDisplay : System.Web.UI.UserControl
{
private Message _ErrorMessage;
public ErrorDisplay()
{
}
public ErrorDisplay(Message ErrorMessage)
{
_ErrorMessage = ErrorMessage;
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
if (_ErrorMessage != null)
{
lblTitle.Text = _ErrorMessage.Message;
lblDescription.Text = _ErrorMessage.Description;
}
}
}
别处在我的web应用程序我加入使用下面的代码的用户控件的页面的实例:
divValidationIssues.Controls.Add(LoadControl(typeof(ErrorDisplay), new object[] { MessageDetails }));
我使用的重载版本LoadControl,因为我想将Message参数传递给构造函数。所有这一切出现工作正常。
但是,当在ErrorDisplay usercontrol上触发OnPreRender()
时,lblTitle和lblDescription变量均为null
,尽管它们具有等价的标记。消息变量已正确填充。
任何人都可以阐明为什么这可能会发生任何轻?
感谢
编辑:
只是为了清楚起见,我还要补充一点,这是编程添加用户控件的页面的代码响应按钮按下时运行,所以“托管页面“已经通过Init,Page_Load进行并且正在处理事件处理程序。
,因为它们是在响应按钮单击事件正在创建我不能在较早的asp生命周期阶段添加用户控件。
+1和我的谢谢你解决我遇到的问题。 :) – 2008-12-27 12:06:09