<% # Eval ( “Estado”)%> ou <% # DataBinder.Eval (Container.DataItem, “estado”)%>

StackOverflow https://stackoverflow.com/questions/270230

  •  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?

Foi útil?

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(), e Bind() 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

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top