Ich habe ein Problem bei der Verwendung von LoadControl( type, Params )
. Lassen Sie mich erklären ...
Ich habe eine super einfache Benutzersteuerung (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" />
mit Code ( c# ) dahinter:
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;
}
}
}
An anderer Stelle in meiner Webanwendung füge ich mit dem folgenden Code eine Instanz des Benutzerkontrolls zur Seite hinzu:
divValidationIssues.Controls.Add(LoadControl(typeof(ErrorDisplay), new object[] { MessageDetails }));
Ich verwende die überladene Version von LoadControl, weil ich den Parameter Message an den Konstruktor übergeben möchte. All dies erscheint gut zu funktionieren.
Wenn jedoch die OnPreRender()
auf dem ErrorDisplay-Benutzerelement ausgelöst wird, sind die Variablen lblTitle und lblDescription beide null
obwohl sie ein Äquivalent für den Aufschlag haben. Die Nachrichtenvariable wurde korrekt ausgefüllt.
Kann mir jemand sagen, woran das liegen könnte?
Merci
EDIT :
Der Klarheit halber füge ich noch hinzu, dass der Code, der das Benutzerelement programmatisch zur Seite hinzufügt, als Reaktion auf einen Tastendruck ausgeführt wird, so dass die "Hosting-Seite" Init und Page_Load durchlaufen hat und nun die Event-Handler verarbeitet.
Ich kann die Benutzerkontrollen nicht in einer früheren Phase des Asp-Lebenszyklus hinzufügen, da sie als Reaktion auf ein Schaltflächenklickereignis erstellt werden.