Eval и ItemDataBound или RowDataBound событие для отображения данных, какой из них лучше? - PullRequest
6 голосов
/ 04 ноября 2010

Какой метод лучше (с точки зрения производительности), если у меня есть DataBoundControl, такой как GridView, Repeater и / или DataList, и я использую следующий метод для отображения данных:

Eval("ColumnName")

или обработку ItemDataBound илиСобытие RowDataBound, такое как:

void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{
    // my code to display data here
}

Я предпочитаю второе из-за читабельности кода, но из-за производительности они одинаковы (или они вообще одно и то же)?

Ответы [ 3 ]

5 голосов
/ 04 ноября 2010

Я тоже предпочитаю вторую версию.На мой взгляд, это проще для отладки и разделения html и кода.

Согласно этому более старому документу, Повышение производительности и масштабируемости приложений .NET , это более эффективно (упомянуто на странице 297).

2 голосов
/ 04 ноября 2010

Eval может быть быстрее (зависит от ситуации, потому что он также запаздывает и использует отражение), но через DataBound-Event он более читабелен и более перспективен на будущее.

0 голосов
/ 05 марта 2014

Я думаю, что каждый полезен в ситуациях.Метод eval - это быстрый и легкий способ сделать что-то простое, если не требуется много логики.Но я видел, как это злоупотребляли неопытные программисты.

Недавно я взял на себя разработку проекта, в котором они использовали ретранслятор.Они делали что-то вроде следующего:

    <asp:Repeater>
      <ItemTemplate>
        Field Visible = '<%# (method(dataItem.a)) %>
        Field
        Field Visible = '<%# method(Eval(dataItem.a),Eval(dataItem.b)) %>'
        Field
        Field Visible = '<%# (method(dataItem.a)) %>'
        Field Visible = '<%# (method(dataItem.b)) %>'
      </ItemTemplate>
    </asp:Repeater>

На это было просто больно смотреть.Похоже, что разработчики просто продолжали добавлять больше полей и вызывать один и тот же метод, чтобы проверить, должно ли поле отображаться или нет.Нечто подобное можно легко обработать в ItemDataBound, и его легче поддерживать.И вы всегда должны программировать, ожидая, что ваш код нужно будет изменить / добавить позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...