<% # Eval ( “Estado”)%> ou <% # DataBinder.Eval (Container.DataItem, “estado”)%>
-
06-07-2019 - |
Pergunta
Qual é a diferença entre ter
<%# Eval("State") %>
na sua página aspx
, contra ter
<%# DataBinder.Eval(Container.DataItem, "State") %>
na sua página aspx
?
Solução
Eval ( "Estado") é uma forma simplificada da DataBinder.Eval (Container.DataItem, "Estado") sintaxe. Ele só funciona dentro de controles de modelo de dados ligado.
Para obter mais informações, consulte a documentação MSDN .
Outras dicas
Não há nenhuma diferença. O método "Eval" é apenas um atalho para o DataBinder.Eval (Container.DataItem, "blah") método.
Há uma série de diferenças entre <%# Eval %>
e <%# DataBinder.Eval %>
debaixo das cobertas, embora estados a documentação que o uso Eval
(TemplateControl.Eval
para ser exato) realmente chama DataBinder.Eval
e que sua tarefa é fazer exatamente o mesmo trabalho.
Isso é correto, mas usando meios apenas Eval
que se ASP.NET resolve o objeto que é ligação de dados. Ele faz isso internamente com uma pilha onde os itens são adicionados quando Control.DataBind()
é chamado. O truque é que isso acontece apenas se a propriedade Page
do controle é não-null
naquele ponto.
Se a pilha gerenciada por Page
não é atualizado quando você chegar ao ponto que as necessidades DataItem
para ser resolvido, o método Page.GetDataItem()
dará uma exceção com uma mensagem como
métodos DataBinding tais como
Eval()
,XPath()
, eBind()
só pode ser usado no contexto de um controlo de ligação de dados.
DataBinder.Eval
ainda funciona, nessas circunstâncias, porque você fornecê-lo o objeto de destino manualmente, de modo ASP.NET não precisa fazer qualquer resolver por conta própria.
o método Eval é apenas um atalho da carta ??p>
Eu vi seguinte código
<%# (DataBinder.Eval(Container.DataItem, "ApplicationId").ToString() == "-1" ? "N/A" : Eval("ApplicationId").ToString()) %>
Então eu acho que um pouco diferente.