Domanda

Qual è la differenza tra avere

<%# Eval("State") %>

nella tua pagina aspx , anziché

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

nella tua pagina aspx ?

È stato utile?

Soluzione

Eval (" State ") è una forma semplificata della sintassi DataBinder.Eval (Container.DataItem, " State "). Funziona solo all'interno dei controlli dei modelli associati ai dati.

Per ulteriori informazioni, vedere la documentazione MSDN .

Altri suggerimenti

Non c'è differenza. "Eval" Il metodo è solo una scorciatoia per il metodo DataBinder.Eval (Container.DataItem, " blah ").

Ci sono molte differenze tra <% # Eval% > e <% # DataBinder.Eval% > sotto le copertine, anche se < a href = "https://msdn.microsoft.com/en-us/library/ms178366.aspx#Anchor_1" rel = "nofollow"> la documentazione afferma che l'utilizzo di Eval ( TemplateControl.Eval per l'esattezza) chiama in realtà DataBinder.Eval e il loro compito è fare esattamente lo stesso lavoro.

Questo è corretto, ma usando solo Eval significa che ASP.NET stesso risolve l'oggetto che è databound. Lo fa internamente con uno stack in cui gli elementi vengono aggiunti quando viene chiamato Control.DataBind () . Il trucco è che ciò accade solo se la proprietà Page del controllo non è null in quel punto.

Se lo stack gestito Page non è aggiornato quando si arriva al punto in cui DataItem deve essere risolto, Page.GetDataItem ( ) genererà un'eccezione con un messaggio come

  

I metodi di database come Eval () , XPath () e Bind () possono essere usati solo nel contesto di un database controllo.

DataBinder.Eval funziona ancora in quelle circostanze perché gli si fornisce l'oggetto target manualmente, quindi ASP.NET non ha bisogno di alcuna soluzione da solo.

il metodo Eval è solo una scorciatoia della lettera

Ho visto il seguente codice

<%# (DataBinder.Eval(Container.DataItem, "ApplicationId").ToString() == "-1" ? "N/A" : Eval("ApplicationId").ToString()) %>

Quindi immagino che siano leggermente diversi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top