Problème avec RenderControl
Bonjour,
J'essaie de récupérer le contenu d'un contrôle personnalisé dans un String.
Pour cela, j'utilise la méthode RenderControl comme ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
ctrlComment commentControl = new ctrlComment();
commentControl.Auteur = "Jack";
commentControl.Message = "Le message de jack";
StringBuilder sb = new StringBuilder();
using (StringWriter sw = new StringWriter(sb))
{
using (HtmlTextWriter textWriter = new HtmlTextWriter(sw))
{
commentControl.RenderControl(textWriter);
}
}
String contenu = sb.ToString(); |
Cette partie du code fonctionne parfaitement. Je l'ai testé avec l'exemple donné sur ce site : http://stevesmithblog.com/blog/rende...rol-as-string/
Le problème arrive quand j'essaie d'utiliser un contrôle que j'ai créé.
Code du contrôle : commentaire.ascx
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ctrlComment.ascx.cs"
Inherits="Blog.Web.Controls.ctrlComment" %>
<div class="commentaire">
<strong class="auteur">
<asp:Literal ID="txtAuteur" runat="server" Text="Unknown"></asp:Literal>
</strong>
<p class="message">
<asp:Literal ID="txtMessage" runat="server" Text="No Text"></asp:Literal>
</p>
</div> |
Code Behind :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
public partial class ctrlComment : System.Web.UI.UserControl
{
private String _auteur;
private String _message;
#region Properties
public String Auteur
{
get { return _auteur; }
set { _auteur = value; }
}
public String Message
{
get { return _message; }
set { _message = value; }
}
#endregion
protected void Page_Load(Object sender, EventArgs e)
{
txtAuteur.Text = this.Auteur;
txtMessage.Text = this.Message;
}
} |
Quand j'utilise ce contrôle, le string récupérer est vide alors qu'il devrait contenir le code html du contrôle.
Je voulais savoir si j'avais oublier quelque chose dans mon code ou quelque autre erreur que j'aurai pu commettre.
Pour information, le contrôle fonctionne parfaitement quand je l'utilise dans une page.
Merci d'avance pour votre aide