<%# Eval(“Состояние”) %> или <%# DataBinder.Eval(контейнер.Элемент данных, “состояние”)%>

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

  •  06-07-2019
  •  | 
  •  

Вопрос

В чем разница между наличием

<%# Eval("State") %>

в вашем aspx страница, а не наличие

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

в вашем aspx страница?

Это было полезно?

Решение

Eval («State») - это упрощенная форма синтаксиса DataBinder.Eval (Container.DataItem, «State»). Он работает только внутри связанных с данными элементов управления шаблонами.

Дополнительную информацию см. в документации MSDN .

Другие советы

Разницы нет. & Quot; Eval " Метод является просто ярлыком для метода DataBinder.Eval (Container.DataItem, " blah ").

Существует много различий между <%# Eval %> и <%# DataBinder.Eval %> под одеялом, хотя документация утверждает , что использование Eval (TemplateControl.Eval чтобы быть точным) на самом деле вызывает DataBinder.Eval и что их задача состоит в том, чтобы выполнять точно такую же работу.

Это правильно, но используя только Eval означает, что ASP.NET сам разрешает объект, связанный с базой данных.Он делает это внутренне со стеком, куда элементы добавляются, когда Control.DataBind() называется.Фокус в том, что это происходит только в том случае, если Page свойство элемента управления не является-null в этот момент.

Если Page-управляемый стек не обновляется, когда вы доходите до того, что DataItem нуждается в решении, проблема Page.GetDataItem() метод выдаст исключение с сообщением типа

Методы привязки данных, такие как Eval(), XPath(), и Bind() может использоваться только в контексте элемента управления, связанного с базой данных.

DataBinder.Eval все еще работает в этих обстоятельствах, потому что вы предоставляете ему целевой объект вручную, поэтому ASP.NET ему не нужно выполнять какое-либо разрешение самостоятельно.

метод Eval - это просто ярлык буквы

Я видел следующий код

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

Думаю, они немного отличаются.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top