Question

Quelle est la différence entre avoir

<%# Eval("State") %>

dans votre page aspx , par opposition à

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

dans votre page aspx ?

Était-ce utile?

La solution

Eval ("State") est une forme simplifiée de la syntaxe DataBinder.Eval (Container.DataItem, "State"). Cela ne fonctionne que dans les contrôles de modèles liés aux données.

Pour plus d'informations, voir la documentation MSDN .

Autres conseils

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

Il existe de nombreuses différences entre <% # Eval% > et <% # DataBinder.Eval% > , même si < a href = "https://msdn.microsoft.com/en-us/library/ms178366.aspx#Anchor_1" rel = "nofollow"> la documentation indique que l'utilisation de Eval ( TemplateControl.Eval pour être exact) appelle réellement DataBinder.Eval et que leur tâche consiste à effectuer exactement le même travail.

C'est exact, mais utiliser seulement Eval signifie qu'ASP.NET lui-même résout l'objet lié à la donnée. Cela se fait en interne avec une pile où des éléments sont ajoutés lorsque Control.DataBind () est appelé. Le truc, c'est que cela ne se produit que si la propriété Page du contrôle n'est pas null à ce stade.

Si la pile Page gérée n'est pas à jour lorsque vous parvenez au point où DataItem doit être résolu, le Page.GetDataItem ( ) donnera une exception avec un message comme

  

Les méthodes de liaison de données telles que Eval () , XPath () et Bind () ne peuvent être utilisées que dans le contexte d'un databound contrôle.

DataBinder.Eval fonctionne toujours dans ces circonstances car vous lui fournissez manuellement l'objet cible. ASP.NET n'a donc pas besoin de résoudre lui-même.

la méthode Eval n'est qu'un raccourci de la lettre

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top