Bonjour,
Contexte: Je voudrais faire un template dans lequel je voudrais charger plusieurs contrôles de manière automatique. Pour cela j'utilise deux fichiers :
- test.aspx
1 2 3 4 5 6 7 8 9 10 11 12
|
<%@ Page Language="C#" Debug="true" %>
<%@ Import Namespace="System.Web.UI" %>
<script language="C#" runat="server">
UserControl C = null;
protected void Page_Load(object sender, EventArgs e)
{
C = (UserControl)LoadControl("CtrlTest.ascx");
//((COpes)C).test = "mon test est OK";
CtrlC.Controls.Add(C);
</script>
<div id="CtrlC" runat="server"></div> |
- CtrlTest.ascx
1 2 3 4 5 6
|
<%@ Control ClassName="COpes" %>
<script language="C#" runat="server">
public string test = "AFFICHE SANS PARAM";
</script>
<H1><%=test%></H1> |
Requis:
Créer des contrôles à la volée sans passer par une directive.
Fonctionnel:
Le contrôle s'affiche quand je ne remplis pas les propriétés.
Erreur:
Lorsque j'essaie de mettre à jour la propriété de mon contrôle cela ne fonctionne plus. J'obtiens ce message d'erreur :
CS0246: The type or namespace name 'COpes' could not be found (are you missing a using directive or an assembly reference?)
Cela marche uniquement si on ajoute cette instruction:
<%@ Reference Control="CtrlTest.ascx" %>
Je ne sais pas comment faire le cast pour qu'il reconnaisse mon contrôle et me permette d'accéder aux propriétés du contrôle.
Merci,
Choupi.
Partager