2009-11-30 4 views
0

Je crée des liens asp en utilisant response.write dans C#, le même code HyperLink fonctionne correctement lorsqu'il est inséré directement dans le code ASP, mais quand je le copie/le colle sur le response.write ("...") apparaît comme un texte noir non cliquable.Création de liens cliquables à l'exécution de C# aspx webform

Suis-je en train d'oublier quelque chose?

<asp:HyperLink ID='HyperLink1' runat='server' NavigateUrl='Exibe.aspx'> CLICK HERE </asp:HyperLink> 

ce code exact ci-dessus jeté dans la source ASPX fonctionne très

response.write("<asp:HyperLink ID='HyperLink1' runat='server' NavigateUrl='Exibe.aspx'> CLICK HERE </asp:HyperLink>"); 

et cela se transforme en un texte noir

+0

une autre question, si vous me permettez .. je dois trouver un moyen d'envoyer une chaîne dans mon code ainsi que dans le querrystring de mon lien .. et il ne me laisse pas concaténer le code de lien .. – Marcelo

Répondre

2

Vous ne pouvez pas insérer un aspic: tag Hyperlink directement dans le flux de réponse comme que, comme le lien hypertexte est en fait un contrôle qui a besoin de "rendre" lui-même (si vous l'avez remplacé par un "" ancre/un lien hypertexte normal, cela fonctionnerait bien). A la place, vous devez soit créer le contrôle et l'ajouter à la page par programmation, soit utiliser un contrôle répéteur pour restituer les ancres.

+0

mon problème est .. ce n'est pas le code exact, juste un plus simple. Je vais utiliser des Querrystrings, donc les hyperliens vont devoir être créés au moment de l'exécution. – Marcelo

+0

hah .. peu importe. J'ai remarqué que Querrystrings fonctionnent avec .. merci! – Marcelo

0

Vous essayez de faire totalement différentes choses:

  1. le balisage (asp: HyperLink) seront compilés.
  2. le Response.Write ("asp: HyperLink") ne le sera pas. Il rendra le texte tel quel, et bien sûr vous ne verrez aucun lien, en fait vous devriez voir le texte à l'intérieur du tag asp: HyperLink (en incluant le tag lui-même dans la source HTML).

Si vous voulez créer un lien, vous pouvez dunamically le faire en utilisant des extraits de code ci-dessous:

<asp:HyperLink ID='HyperLink1' runat='server' NavigateUrl='<%= GetDynamicUrl() %>'> CLICK HERE </asp:HyperLink> 
/// Or plain HTML 
<a href="<%= GetDynamicUrl()"><%= GetTheLinkText() %></a> 
+0

C'est la méthode publique/protégée sur le fichier code-behind (où vous écrivez votre code C# ou VB.NET). Cette méthode peut retourner tout ce que vous voulez dynamiquement et est exécuté sur le serveur –

0

Si vous souhaitez générer un lien hypertexte dynamique sur le côté serveur comme celui-ci, vous pouvez soit utiliser Response.Write avec une balise <a> comme slugster dit, ou encore considérer l'ASP: Contrôle littéral qui rend exactement ce que vous lui donnez même s'il contient un balisage par exemple

Dans votre balisage:

<asp:literal runat="server" id="MyLiteral" /> 

Dans votre code:

string myHTMLFragment; 

myHTMLFragment = "Hello. I am a link pointing to <a href="http:stackoverflow.com">StackOverflow</a>"; 

MyLiteral.Text = myHTMLFragment; 
Questions connexes