Question

Je suis en train de créer un contrôle personnalisé composite à base d'un large asp: contrôle Label. Je voudrais être en mesure d'avoir des propriétés par défaut de l'étiquette soit skinable ainsi que d'autres propriétés que j'ajouter à mon contrôle.

Mais quand j'ajoute une définition de la peau dans le fichier Default.skin dans mon répertoire de thèmes et ajouter le contrôle sur ma page avec le SkinID spécifié, je ne peux pas comprendre comment obtenir le contrôle pour rendre les propriétés dépecés.

Points supplémentaires:

  • Mon contrôle personnalisé est défini dans une bibliothèque / dll séparée.
  • J'ajouté une propriété de test, et a ajouté l'attribut [des thèmes (false)]. Ensuite, je mets cette propriété dans le fichier .skin. Je n'ai pas eu d'erreurs lorsque j'ai essayé de voir la page, il me semble que le fichier .skin ne s'applique ou que la définition de contrôle dans le fichier de la peau ne soit pas adaptée avec la définition de contrôle dans le page ASPX.

A partir du fichier de la peau:

<ctrl:ExtendedLabel SkinId="test" runat="server"
 Expandable="true" Lookup="true" Required="true"
 RequiredCssClass="required" Text="Hello" />

Dans la page ASPX:

<ctrl:ExtendedLabel SkinID="test" runat="server"/>

De web.config:

<pages>
  <controls>
     <add tagPrefix="ctrl" namespace="MyCompany.WebControls"
          assembly="MyCompany.Web" />
  </controls>
</pages>

J'ai ajouté une propriété de test pour le contrôle, il a marqué comme [des thèmes (faux)] afin de tester si je reçois l'erreur d'exécution lors de la configuration que la propriété dans le fichier de la peau. Pas d'erreur.

Notez que la balise pages ne possède pas d'attribut StyleSheetTheme. Je cependant, ont une classe de page de base qui l'emporte sur la propriété StyleSheetTheme, qui semble fonctionner pour tout le reste.

Si j'ajoute l'attribut StyleSheetTheme à la balise pages dans web.config, les choses de la peau fonctionne, y compris obtenir l'erreur si je tente de définir la propriété non avec des thèmes.

Quelle est la différence? Comment puis-je obtenir de travailler avec la page de base du code de la propriété de la classe?

Était-ce utile?

La solution

Qu'est-ce que vous obtenez quand êtes vous essayez ceci? Je viens de créer un projet de test simple et a été en mesure de la peau d'une propriété personnalisée sur un contrôle personnalisé web. Mes étapes étaient:

  • Créez le contrôle personnalisé.
  • Ajouter [thèmes (true)] attribut à la définition de la classe dans le fichier code-behind.
  • Ajoutez un contrôle Label à mon contrôle personnalisé.
  • Ajouter une propriété nommée « LabelText » à mon contrôle personnalisé, qui obtient / définit le contrôle de l'étiquette valeur du texte.
  • Dans web.config, ajoutez 'thème = "TestTheme"' à la section System.Web / pages.
  • Dans web.config, ajoutez '' aux System.Web / pages / contrôle section.
  • Dans mon fichier Default.skin, a ajouté «
  • Dans Default.aspx, a ajouté '

Chargez la page et voir le texte « Texte de test », qui était présent dans le fichier de la peau.

Si tout va bien un de mes étapes ci-dessus sera quelque chose que vous avez oublié, mais sinon, s'il vous plaît mettre à jour votre question avec des détails sur ce que vous essayez et ce que vous voyez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top