使用時に問題が発生してLoadControl( type, Params )
います。説明させてください...
私は非常にシンプルなユーザーコントロール(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 }));
Message パラメーターをコンストラクターに渡したいので、オーバーロードされたバージョンの LoadControl を使用しています。これはすべて正常に機能しているようです。
ただし、が ErrorDisplay ユーザー コントロールで起動されると、同等のマークアップがあるにもかかわらず、OnPreRender()
lblTitle 変数と lblDescription 変数は両方ともになります。null
メッセージ変数が正しく取り込まれました。
なぜこれが起こっているのか、誰かが光を当てることができますか?
ありがとう
編集:
わかりやすくするために、ユーザーコントロールをプログラムでページに追加するコードがボタンの押下に応答して実行されていることも追加します。そのため、「ホスティングページ」は Init、Page_Load を介して進行し、現在イベントハンドラーを処理しています。
ユーザー コントロールは、ボタン クリック イベントに応答して作成されているため、asp ライフサイクルの初期段階で追加できません。