J'ai un contrôle utilisateur Web avec le balisage suivantErreur dans le contrôle utilisateur Web avec ITemplate en mode Design
<table>
<tr>
<td>
<h1>
<%= this.Title %></h1>
</td>
</tr>
<tr>
<td>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</td>
</tr>
<tr>
<td>
<h2>
Footer</h2>
</td>
</tr>
</table>
le code derrière:
[ParseChildren(true, "Content"), PersistChildren(true)]
public partial class WebUserControl1 : System.Web.UI.UserControl
{
public string Title { get; set; }
[PersistenceMode(PersistenceMode.InnerDefaultProperty),
TemplateContainer(typeof(ContentContainer)),
TemplateInstance(TemplateInstance.Single),
DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public ITemplate Content { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
PlaceHolder1.Controls.Clear();
var container = new ContentContainer();
this.Content.InstantiateIn(container);
PlaceHolder1.Controls.Add(container);
}
}
public class ContentContainer : Control, INamingContainer
{
}
et en utilisant dans une page comme celle-ci
<%@ Register Src="WebUserControl1.ascx" TagName="WebUserControl1" TagPrefix="uc1" %>
<uc1:WebUserControl1 ID="WebUserControl11" runat="server" Title="The Title">
<Content>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></Content>
</uc1:WebUserControl1>
Lorsque j'exécute la page, elle s'exécute bien. lorsque je vois la page en mode Conception j'ai l'erreur suivante:
Type 'System.Web.UI.UserControl' does not have a public property named 'Content'.
Comment puis-je résoudre ce problème?
EDIT: Je modifié le code
'ParseChildren (true, le "contenu")' n'a pas marché –
que diriez-vous [ParseChildren (true, "Contenu"), PersistChildren (true)]. Vous devrez peut-être fermer la page et la rouvrir pour résoudre tous les problèmes de mise en cache. Avez-vous regardé à travers l'article que j'ai lié à. Il aborde ce genre de problèmes de concepteur. –
également, essayez de définir le mode de persistance du contenu à PersistenceMode (PersistenceMode.InnerDefaultProperty) –