35 votes

<% # Eval ("State")%> ou <% # DataBinder.Eval (Container.DataItem, "state")%>

Quelle est la différence entre avoir

<%# Eval("State") %> dans votre page aspx ou

<%# DataBinder.Eval(Container.DataItem, "State") %> dans votre page aspx?

Merci, X

39voto

Jeromy Irvine Points 5308

Eval ("State") est une forme simplifiée de la syntaxe DataBinder.Eval (Container.DataItem, "State"). Il ne fonctionne qu'à l'intérieur des contrôles de modèle liés aux données.

Pour plus d'informations, consultez la documentation MSDN .

11voto

Timothy Khouri Points 14640

Il n'y a pas de différence. La méthode "Eval" n'est qu'un raccourci pour la méthode DataBinder.Eval (Container.DataItem, "blah").

9voto

Raman Sharma Points 51

Il y a beaucoup de différence entre <%#Eval%> et <%#DataBinder.Eval%> sous les couvertures, même si la documentation indique que l'utilisation de la fonction Eval (TemplateControl.Eval pour être exact) appelle DataBinder.Eval - et leur tâche est de faire exactement le même travail. Oui, c'est fait, mais juste en utilisant Eval signifie que ASP.NET lui-même se résout à l'objet pour lequel la liaison de données se produit. Il le fait en interne avec une pile qui obtient les éléments ajoutés lors de la Commande.DataBind() est appelée, mais le truc, c'est que cela se produit uniquement si la Page de propriété du contrôle est non nulle au point. Donc, si la Page géré la pile n'est pas à jour, et vous obtenez le point quand dataitem doit être résolu avec la Page.GetDataItem() la méthode, vous obtenez l'exception avec le message précédent. La raison pour laquelle DataBinder.Eval fonctionne, c'est que vous les fournissez de l'objet cible manuellement, donc ASP.NET n'a pas besoin de faire tout résoudre sur son propre.

4voto

Josh Mein Points 12352

la méthode Eval n'est qu'un raccourci de cette dernière

-5voto

GLP Points 608

J'ai vu le code suivant

 <%# (DataBinder.Eval(Container.DataItem, "ApplicationId").ToString() == "-1" ? "N/A" : Eval("ApplicationId").ToString()) %>
 

Je suppose donc qu'ils sont légèrement différents.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X