J'ai un contrôle serveur qui contient des contrôles de serveur imbriqués,Nested contrôles serveur
<uc1:ArticleControl runat="server">
<HeadLine></HeadLine>
<Blurb></Blurb>
<Body></Body>
</uc1:ArticleControl>
code:
[ToolboxData("<{0}:ArticleControl runat=server></{0}:ArticleControl>")]
[ParseChildren(ChildrenAsProperties = true)]
public class ArticleControl : WebControl
{
[PersistenceMode(PersistenceMode.InnerProperty)]
public HeadLineControl HeadLine
{
get;
set;
}
[PersistenceMode(PersistenceMode.InnerProperty)]
public BlurbControl Blurb
{
get;
set;
}
[PersistenceMode(PersistenceMode.InnerProperty)]
public BodyControl Body
{
get;
set;
}
}
définition de contrôle Nested (applique à tous les contrôles imbriqués):
public class HeadLineControl : ControlBase
{
public HeadLineControl() : base() { }
public HeadLineControl(Article article) : base(article) { }
Définition de la classe de base
public abstract class ControlBase : Control
{
protected Article article;
protected ControlBase() { }
protected ControlBase(Article article)
{
this.article = article;
}
Le ArticleControl est responsable de l'écriture pour les différentes parties de l'article spécifié par les contrôles imbriqués,
Mon problème est que lorsque le Articlecontrol est créé, les instances des contrôles serveur imbriqués sont créés par le framework .NET en utilisant le constructeur par défaut défini pour la classe System.Web.UI.Control par exemple:
namespace System.Web.UI
{
public class Control : IComponent, IDisposable, IParserAccessor, IUrlResolutionService, IDataBindingsAccessor, IControlBuilderAccessor, IControlDesignerAccessor, IExpressionsAccessor
{
// Summary:
// Initializes a new instance of the System.Web.UI.Control class.
public Control();
Je dois appeler ou remplacer le comportement par défaut de .Net pour appeler mon constructeur de la classe de base de contrôle au lieu de la valeur par défaut .Net constructeur défini. Donc, en résumé, si une nouvelle instance de HeadLineControl est créée, elle doit être créée par le générateur ControlBase(Article article)
.
Est-ce possible et, si possible, comment y parvenir?