<%# Eval(“Состояние”) %> или <%# DataBinder.Eval(контейнер.Элемент данных, “состояние”)%>
-
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()) %>
Думаю, они немного отличаются.