J'écris un contrôle utilisateur asp.net. Il a une propriété, FurtherReadingPage et deux contrôles liés: ObjectDataSource et un répéteur. À l'intérieur du répéteur, je voudrais afficher un lien hypertexte avec une propriété href définie à quelque chose comme FurtherReadingPage + "?id=" + Eval("Id")
. Je ne sais pas comment le faire dans le balisage de la page. Je peux utiliser <% Eval("Id") %>
ou <% Response.Write(FurtherReadingPage + "?id=") %>
seul mais je ne sais pas comment les mélanger.Comment utiliser le code C# à l'intérieur des balises <% ... %> sur la page asp.net?
8
A
Répondre
3
Vous pouvez le faire comme ça -
<asp:Hyperlink runat="Server" ID="hlLink" NavigateUrl='<%# FurtherReadingPage + "?Id=" + DataBinder.Eval(Container.DataItem, "Id") %>' />
1
Essayez ceci (par exemple comme lien): <a href='<%=FurtherReadingPage %>?id=<%# Eval("Id") %>'>My link</a>
3
Essayez ceci:
<%#String.Format("{0}?id={1}",FurtherReadingPage, Id)%>
17
Vous avez deux différents tags:
<%
exécute le code à l'intérieur:
<% int id = int.Parse(Request["id"]); %>
<%=
écrit le code à l'intérieur:
<%=id %> <!-- note no ; -->
<!-- this is shorthand for: -->
<% Response.Write(id); %>
Ces deux briser le flux normal lorsqu'il est rendu sur une page, par exemple, si vous les utilisez dans une <head runat="server">
normale Asp.net vous aurez avoir des problèmes
<%#
databinding:
<%# Eval("id") %>
Cela vous permet de spécifier les liaisons pour les contrôles qui rendent WebForms Asp.net comme une collection (plutôt que les contrôles littérales que vous pouvez utiliser avec <%=
), par exemple:
<!-- this could be inside a repeater or another control -->
<asp:Hyperlink runat="server" ID="demo"
NavigateUrl="page.aspx?id=<%# Eval("id") %>" />
<% //without this bind the <%# will be ignored
void Page_Load(object sender, EventArgs e) {
demo.DataBind();
//or
repeaterWithManyLinks.DataBind();
}
%>
Pour votre cas vous soit:
- Utilisez un répéteur et
<%# Eval(...) %>
avecrepeater.DataBind();
ou
- Utilisez une boucle foreach (
<% foreach(... %>
) avec<%= ... %>
Questions connexes
- 1. Comment ajouter et remplir par programme des balises <xs: annotation> et <xs: documentation> en C#
- 2. Pouvez-vous avoir des balises <param> dans un asp.NET WebUserControl?
- 3. Comment utiliser les opérateurs >> et << pour les données binaires en C++?
- 4. Comment rendre le contenu de <pre><code></code></pre> correctement rendu dans IE7?
- 5. Collection <T> par rapport à la liste <T> que devez-vous utiliser sur vos interfaces?
- 6. Quand faut-il utiliser <%# ... %> et <%= ... %>?
- 7. Comment créer un effet désactivé sur les tags <input>, <select> et <img> avec jQuery?
- 8. Comment affichez-vous html comme code sur la page asp.net?
- 9. Comment utiliser <xmlpeek> dans NAnt
- 10. Est-ce que asp.net supprime <script> balises dans les répéteurs et à l'intérieur de la <% pour la boucle%> dans mvc
- 11. Comment sortir le code HTML du bloc JSP <%! ... %>?
- 12. Comment utiliser ruby pour obtenir une chaîne entre les balises HTML <cite>?
- 13. C# - delegate System.Func < >
- 14. C# IEnumerable <Object> à la chaîne
- 15. Comment publier sur <me> .github.com?
- 16. Rendu de contrôle personnalisé ASP.NET avant que le code <%= %> s'exécute pour remplir la propriété
- 17. Comment utiliser les balises ASP.NET <% = dans les attributs de contrôle du serveur?
- 18. <script> ...</script> l'intérieur d'un code de contrôle de répéteur ne se présente pas dans le code source de la page rendre
- 19. ICollection <string> à la chaîne []
- 20. C++ fstream << and >> opérateurs avec des données binaires
- 21. Comment poster un agenda Google dans une page Web sans utiliser <iframe>?
- 22. Comment puis-je réduire IEnumerable <IEnumerable <Foo>> à IEnumerable <Foo>?
- 23. Dans un contrôle ASP, comment puis-je obtenir le texte d'une balise <Contentemplate> dans le code de contrôle?
- 24. Comment jeter Expression <Func <T, DateTime>> à l'expression <Func <T, object>>
- 25. Parse XML avec JRuby avec des balises comme <foo.bar>
- 26. Comment alignement vertical <input> et <iframe> à l'intérieur <td> (démo incluse)
- 27. Longueur maximale pour le code HTML <textarea>
- 28. obtenir le texte entre <tags> dans php</tags>
- 29. Comment utiliser des annotations XML telles que "XMLRoot" pour analyser le schéma comme <field key = "AA" id = "BB"> CC</field> en C#?
- 30. Puis-je convertir le code suivant pour utiliser des génériques?
Ce mix <% = et <% #, ce qui créera des problèmes dans la plupart des circonstances. <% = ne fonctionnera pas dans un répéteur et <% # ne fonctionnera que si DataBind() est appelé. – Keith
@Keith: Vous avez tort. J'ai juste essayé <%= "Test" %> à l'intérieur d'un répéteur pour vérifier et cela fonctionne bien. <% # ne fonctionne qu'avec Databind(), ce qui est le cas. – Sergio
Désolé, oui, <% = peut fonctionner dans les répéteurs, en fonction de la hiérarchie de contrôle ci-dessus ne contenant aucun contrôle de style de collection. Fondamentalement, <% = FurtherReadingPage%> fonctionnera parfois dans un répéteur, alors que <% # FurtherReadingPage%> le fera toujours. – Keith