2008-09-22 5 views
24

J'utilise ASP.NET depuis des années, mais je ne me souviens jamais quand j'utilise le # et = sont appropriés.Quand dois-je utiliser # et = dans les contrôles ASP.NET?

Par exemple:

<%= Grid.ClientID %> 

ou

<%# Eval("FullName")%> 

Quelqu'un peut-il expliquer quand chacun doit être utilisé pour que je puisse le garder droit dans mon esprit? # Est-il uniquement utilisé dans les contrôles qui prennent en charge la liaison de données?

+0

connexes (? Dupliquer): [Dans ASP.NET, ce qui sont les différentes façons de code en ligne dans le .aspx?] (http://stackoverflow.com/questions/28219). –

+0

Je n'ai pas vérifié la théorie derrière cela, mais <% # semble être évalué AVANT <% =, donc même si la variable accédée peut exister et est définie pendant la durée de vie, elle peut retourner null. Je viens juste de perdre un peu de temps pour résoudre un problème de ce genre (situation très délicate dans mon cas), alors j'ai pensé qu'il pourrait être utile de le partager. – AFract

Répondre

24

<% =%> est l'équivalent de faire Response.Write ("") où vous le placez.

<% #%> est pour Databinding et ne peut être utilisé lorsque la liaison de données est pris en charge (vous pouvez les utiliser sur la page de niveau en dehors d'un contrôle si vous appelez Page.DataBind() dans votre codebehind)

Databinding Expressions Overview

7

Voici un great blog post by Dan Crevier qui parcourt une application de test qu'il a écrite pour montrer les différences.

En substance:

  • Le <% = Les expressions sont évaluées au moment du rendu
  • Le <% expressions # sont évaluées à DataBind() le temps et ne sont pas évalués du tout si DataBind() n'est pas appelé.
  • < Les expressions% # peuvent être utilisées comme propriétés dans les contrôles côté serveur. <% = les expressions ne peuvent pas.
+0

"<% = les expressions ne peuvent pas." Parce que <%= %> est un raccourci pour Response.Write qui arrive _ * après * _ la page est restituée et la réponse est retransmise à la navigation. – AMissico

41

Il y a deux différents 'abeilles piqûres':

  • <%@ - page Directive
  • <%$ - accès à la ressource
  • <%= - sortie explicite à la page
  • <%# - Données liaison
  • <%-- - bloc de commentaire côté serveur

Autre nouveauté dans ASP.Net 4:

  • <%: - écrit sur la page, mais avec HTML encodées
+0

Très concis, merci. – KevDog

+4

<% $ n'est pas seulement pour l'accès aux ressources, mais pour ExpressionBuilders - dont ConnectionStrings, AppSettings et Resource sont inclus dans ASP.NET. C'est aussi trivial d'écrire le vôtre. http://msdn.microsoft.com/en-us/library/system.web.compilation.expressionbuilder.aspx –

+1

Tout à fait une bonne explication ici: http://michielvoo.net/blog/expressions-vs-statements-part- 2-asp-net-code-block-types/ – Keith

Questions connexes