我使用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