11
votes

Contrôle personnalisé dans ASP.NET C #

J'ai créé un simple contrôle personnalisé qui hérite uniquement de la commande code> littéral code> et n'a pas encore aucune extension, le code est vide.

Espace de noms: CustomControls P>

Nom de la classe: littéral: system.web.ui.webcontrols.literal p>

prochaine chose que je fais est d'enregistrer ce contrôle dans l'ASPX code> Aspx comme suit: p>

<%@ Register TagPrefix="web" Namespace="CustomControls" %>


5 commentaires

Que voulez-vous dire exactement par "Créer un nouveau projet"? Fichier -> Nouveau -> Projet -> ... (au moins dans VS 2005), puis, qu'avez-vous cité? Cela pourrait être important (c'est-à-dire choisi d'autres langues -> Visual C # -> Web -> peu importe?). Et vous avez besoin d'une assemblée à un moment donné; La question est de savoir si vous devez le nommer explicitement (et je pense que vous devez avoir à si vous n'utilisez pas de projet «site Web», car vous n'avez pas de dossier App_code).


Où existe votre classe de contrôle personnalisée? Est-ce un fichier de classe dans le projet de site Web ou est-ce dans son propre projet?


Vous avez donc deux projets pour les «CustomControls» et un autre pour le projet Web?


@scherand: Je pense qu'il veut dire qu'il fait cela comme un projet d'application Web et non comme un projet de site Web. Les deux comportent un peu différemment.


Le problème se produit dans webapplicationProject dans vs2008


5 Réponses :


2
votes

Vous pouvez également enregistrer votre contrôle dans web.config si vous souhaitez l'utiliser sur d'autres pages xxx

pour le site Web, cela fonctionnera xxx


2 commentaires

Merci pour la réponse, la chose est - je n'ai pas encore de fichier de montage, et comme je l'ai compris, le contrôle peut être enregistré par TagPrefix et par espacement de noms uniquement, même sans assemblage. ai-je raison ?


Si vous avez créé un projet d'application Web, vous aurez un assemblage, voir: DL. Dropbox.com/u/6561262/Project-settings.png



28
votes

Voici comment je l'ai fait, étape par étape à partir de rien. Cette première méthode utilise un deuxième projet / montage. Pour la version App_code, faites défiler vers le bas.

Méthode du projet d'application Web

  1. Créez une nouvelle application Web ASP.NET. Prenez note du nom, le mien s'appelle webapplication2. Si vous avez déjà une application Web existante, qui est probablement, double-cliquez sur la section Propriétés de votre projet et vérifiez la propriété «Nom de l'assemblage», notez-la.
  2. Créer une nouvelle classe dans l'application Web nommée littéral.cs
  3. Mettez en code similaire à ce qui suit pour la défenition de la classe: XXX

  4. Ajoutez la balise de registre suivante en haut de votre page ASPX

    <% @ Enregistrer Assembly = "WebApplication2" noms de noms = "CustomControls" TagPrefix = "Web"%>

    Si votre nom de montage était différent, changez-le ici. J'ai remarqué que lorsque je l'ai fait dans vb.net, l'espace de noms était webapplication1.Customcontrols au lieu de simplement personnalistes de CustomControls comme si c'était en C #, en quelque sorte impair.

    1. Ajoutez le nouveau contrôle à votre page:

      Méthode de projet séparé

      1. créer un nouveau site vide (ASP.NET).
      2. Ajoutez une nouvelle bibliothèque de contrôle de serveur ASP.NET nommée CustomControls à la solution.
      3. Ajoutez une nouvelle classe au nouveau projet appelé littéral (j'utilise c # afin que mon fichier soit nommé littéral.cs). Vous trouverez ci-dessous mon code super basique que je crois devoir correspondre au code décrit dans la question. XXX

      4. Ajoutez une référence au projet CustomControls sur votre site Web.

      5. Ajoutez l'enregistrement de montage en haut de votre page ASPX:

        <% @ Enregistrer Assembly = "CustomControls" Nomspace = "CustomControls" TagPrefix = "Web"%>

      6. Ajoutez une nouvelle instance du contrôle à votre page:

        in app_code méthode

        1. créer un nouveau site vide (ASP.NET).
        2. Ajouter une nouvelle classe au dossier App_code littéral2 (J'utilise c # afin que mon fichier soit nommé littéral2.cs). Vous trouverez ci-dessous mon code super basique que je crois devoir correspondre au code décrit dans la question. Je l'ai appelé 2 afin que vous puissiez l'utiliser conjointement avec la méthode décrite ci-dessus sans obtenir des erreurs de compilation XXX

        3. enregistrer l'assemblage / espace de noms pour app_code dans votre page ASPX en ajoutant la ligne suivante au sommet

          <% @ enregistrez l'espace de noms = "CustomControls" Assembly = "__ Code" TagPrefix = "Web"%>

        4. Ajoutez une instance du nouveau contrôle à votre page:

          J'ai testé cela à l'aide de Visual Studio et tout a fonctionné bien pour moi.


3 commentaires

Merci pour les informations détaillées, cela fonctionne parfaitement dans le projet de site Web. Le problème est avec webapplicationProject dans VS2008.


@MAHES - J'ai mis à jour ma réponse pour inclure les directions d'applications Web (elles sont en haut).


@MAHES - S'il vous plaît laissez-moi savoir si le code que j'ai publié ne fonctionne pas pour vous.



2
votes

Le problème réside dans votre <% @ enregistrez tagprefix = "Web" espace de noms = "CustomControls"%> Tag: il manque le nom de l'assemblage!

Il doit devenir <% @ enregistrer tagprefix = "WEB" Espace de noms = "CustomControls" Assembly = "YourassEMblyName"%> . Si vous avez des difficultés à trouver le nom de montage pour votre classe ici, vous trouverez quelques indications:

  1. Si vous avez créé la classe dans le projet Visual Studio de l'application Web, ou dans un projet distinct de la DLL (Bibliothèque partagée), puis cliquez avec le bouton droit de la souris sur le projet et accédez à Propriétés pour obtenir le nom de montage
  2. Si vous avez créé le fichier .cs du répertoire App_code, asp.app_code devrait fonctionner

    Sinon, veuillez nous donner des informations sur la mise en page du projet!


1 commentaires

Merci. Même en spécifiant le nom de l'assemblage n'envoie pas le problème avec webapplicationProject dans vs2008



1
votes

La chose la plus simple à faire est de faire glisser-déposer le littéral.ascx sur la page (si la page est dans la même solution). Si la page est une autre solution, vous pouvez ajouter le contrôle à la boîte à outils VS et glisser-déposer le contrôle sur la page.


0 commentaires

0
votes

vous avez oublié l'attribut SRC.

<%@ Register TagPrefix="web" Namespace="CustomControls" Src="PathToYourCustomControl" %> 


0 commentaires