<% # Eval ("Estado")% > o <% # DataBinder.Eval (Container.DataItem, "estado")% >
-
06-07-2019 - |
Pregunta
¿Cuál es la diferencia entre tener
<%# Eval("State") %>
en su página aspx
, en lugar de tener
<%# DataBinder.Eval(Container.DataItem, "State") %>
en su página aspx
?
Solución
Eval (" State ") es una forma simplificada de la sintaxis DataBinder.Eval (Container.DataItem, " State "). Solo funciona dentro de controles de plantilla vinculados a datos.
Para obtener más información, consulte la documentación de MSDN .
Otros consejos
No hay diferencia. El " Eval " El método es solo un acceso directo para el método DataBinder.Eval (Container.DataItem, " blah ").
Hay muchas diferencias entre <% # Eval% >
y <% # DataBinder.Eval% >
debajo de las cubiertas, aunque < a href = "https://msdn.microsoft.com/en-us/library/ms178366.aspx#Anchor_1" rel = "nofollow"> la documentación establece que el uso de Eval
( TemplateControl.Eval
para ser exactos) en realidad llama a DataBinder.Eval
y que su tarea es hacer exactamente el mismo trabajo.
Eso es correcto, pero usar solo Eval
significa que ASP.NET resuelve el objeto que está enlazado a datos. Hace esto internamente con una pila donde se agregan elementos cuando se llama a Control.DataBind ()
. El truco es que esto sucede solo si la propiedad Page
del control no es null
en ese punto.
Si la pila administrada por Page
no está actualizada cuando llega al punto en que DataItem
necesita resolverse, la Page.GetDataItem ( ) el método
dará una excepción con un mensaje como
Losmétodos de enlace de datos como
Eval ()
,XPath ()
yBind ()
solo se pueden usar en el contexto de un enlace de datos control.
DataBinder.Eval
todavía funciona en esas circunstancias porque le proporciona el objeto de destino manualmente, por lo que ASP.NET no necesita resolverlo por sí solo.
el método Eval es solo un atajo de la letra
He visto el siguiente código
<%# (DataBinder.Eval(Container.DataItem, "ApplicationId").ToString() == "-1" ? "N/A" : Eval("ApplicationId").ToString()) %>
Entonces supongo que son ligeramente diferentes.