2010-09-09 3 views
0

J'essaie d'exécuter l'exemple de contrôle d'utilisateur basé sur un modèle fourni par MSDN. Code est la suivante:Contrôle basé sur un modèle - le contenu n'est pas autorisé entre les balises d'ouverture et de fermeture

Ainsi, selon MSDN cela devrait mettre en œuvre comme suit:

<%@ Register Assembly="MyAssembly" Namespace="MyAssembly.Controls" TagPrefix="abs" %> 
<abs:TemplatedFirstControl id = "First" runat=server 
          Text= "The time on the server is " > 
     <FirstTemplate> 
      <h3><font face="Verdana" color = "red"> 
       <%# Container.Text %> <%# Container.DateTime %> 
       </font> 
      </h3> 
     </FirstTemplate>  
    </abs:TemplatedFirstControl> 

Designer se plaint que le contenu n'est pas autorisé entre les balises d'ouverture et de fermeture de TemplatedFirstControl et que FirstTemplate n'est pas pris en charge. Alors qu'est-ce qui manque? Je dupliqué le code MSDN verbatim

MSDN Article: http://msdn.microsoft.com/en-us/library/aa720695%28v=VS.71%29.aspx

+0

Quelle est votre définition du préfixe 'abs'? –

+0

Il est défini dans la déclaration <% @ Register TagPrefix ... dans le fichier .aspx. –

+0

envisagez de modifier la question pour inclure cette balise Register, ainsi que le lien vers l'article MSDN. Des entrées web.config doivent-elles également être créées? –

Répondre

0

Il semble que le compilateur ne reconnaît pas que FirstTemplate est un élément enfant valide de TemplatedFirstControl. Vérifiez les éléments suivants:

  • FirstTemplate est une propriété publique de la classe codebehind de TemplatedFirstControl?
  • Y a-t-il une classe de contrôle de modèle enfant publique définie, qui dérive de Control et implémente INamedContainer?
  • La propriété FirstTemplate est-elle décorée avec un attribut TemplateContainer?
  • Cet attribut spécifie-t-il correctement le type du contrôle de modèle enfant?
+0

Eh bien, comme indiqué, j'ai utilisé le code exact dans l'article MSDN. Ce que j'avais recréé ici, mais quelqu'un a édité mon post et commenté tout cela. TemplatedFirstControl n'est pas usercontrol. C'est une classe de contrôle serveur. Mais il me semble que toutes ces bases sont couvertes. –

5

Pour toute personne qui a le même problème, je trouve que l'ajout des attributs suivants à la propriété FirstTemplate a résolu le problème pour moi:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] 
[PersistenceMode(PersistenceMode.InnerProperty)] 
public ITemplate FirstTemplate 
{ 
    get 
    { 
     return firstTemplate; 
    } 
    set 
    { 
     firstTemplate = value; 
    } 
}