2009-06-04 8 views
3

Je vais vous expliquer ce que j'essaie d'atteindre:Comment créer dynamiquement de nouveaux liens hypertexte dans ASP.NET?

Je veux avoir une situation où je peux créer autant de contrôles que je veux en les créant dans une boucle dans le code derrière. Je peux le faire en utilisant PHP, en mélangeant le code PHP et le code HTML. Cela me permet de générer dynamiquement des balises HTML réelles.

Dans ASP.NET, je n'ai pas trouvé un moyen de répliquer cette fonctionnalité. J'ai pensé à utiliser une boucle dans le code derrière quelque chose comme la fonction Init() pour créer un tableau d'objets new(), en définissant leurs attributs et en espérant qu'il est passé dans le fichier aspx, mais cela n'a pas été fait. ne fonctionne pas.

Comment faire?

Répondre

9

Si vous voulez creat Dynamiquement ASP.Net Hyperlink contrôle Vous pouvez simplement faire ceci:

HyperLink hyp = new HyperLink(); 
    hyp.ID = "hypABD"; 
    hyp.NavigateUrl = ""; 
    Page.Controls.Add(hyp); 
4

Eh bien, gardez à l'esprit il y a une différence entre Hyperliens et linkbuttons dans ASP.Net

Si vous voulez juste Hyperliens, vous pouvez créer autant que vous le souhaitez en créant un objet HyperLink, ce qui crée de nouveaux objets, puis en ajoutant eux à la collection de contrôles de certains contrôles comme panneau ou span ou quelque chose.

Les LinkButtons sont un peu différents. Vous devez utiliser un contrôle Repeater si vous souhaitez créer un lien qui publie sur le serveur. (Eh bien, vous n'avez pas à mais l'alternative est un travail de piratage.)

Des hyperliens peuvent également être créés en utilisant un contrôle Repeater et, si possible, est la méthode que je recommanderais.

4

Il y a beaucoup des façons de le faire en asp.net:

  1. Si vous voulez vraiment, vous pouvez mettre une boucle en utilisant <% %> balises directement dans le balisage ASPX, tout comme avec php ou asp classique Ceci est pas recommandé.
  2. Vous pouvez placer un contrôle d'espace réservé ou de panneau sur votre formulaire, créer autant de contrôles de lien hypertexte ou de balises d'ancrage que vous le souhaitez dans votre code et les ajouter à la collection de contrôles de l'espace réservé. C'est un peu mieux, mais toujours pas optimal.
  3. Vous pouvez mettre un nombre raisonnable de contrôles de lien hypertexte sur la page, définissez leur propriété visible false par défaut et « activer » ceux dont vous avez besoin. Ceci est préféré à # 2 en raison de certaines bizarreries avec le cycle de vie de la page asp.net.
  4. Ces liens proviennent de quelque part, et que quelque part est généralement une base de données ou toute autre source de données raisonnable. Donc, faites-le piloter par les données — lier cette source de données à un contrôle comme un répéteur, gridview, affichage des détails, ou similaire. C'est probablement votre meilleure option.
4

Si vous voulez générer dynamiquement des contrôles & ne pas besoin d'avoir les publication sur le serveur (par exemple lorsqu'un contrôle est cliqué/changé, il va revenir à la même page) - vous pouvez utiliser les commandes dans System.Web.UI.HtmlControls namespace.

par exemple.

HtmlAnchor link = new HtmlAnchor(); 
link.href = "www.stackoverflow.com"; 
Page.Controls.Add(link);

Espérons que cela vous donne assez d'arrière-plan.

EDIT: Vous pouvez utiliser le code ci-dessus dans une boucle & remplacer la valeur fixe par ce qui vient d'une base de données/objet.

Questions connexes