<% # Eval («State»)% > ou <% # DataBinder.Eval (Container.DataItem, «state»)% >
-
06-07-2019 - |
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
?
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 ()
etBind ()
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.