Я подумал, что задам этот вопрос, чтобы понять, почему многие примеры и люди предпочитают использовать встроенную привязку данных в коде aspx вместо реализации события OnDataBinding при использовании WebForms.
Для любого элемента управления с привязкой к данным (например, Repeater, GridView и т. Д.) Я всегда реализую метод OnDataBinding для элементов управления уровня поля, если мне нужно сделать что-то, что не встроено из коробки (например, Мне нужно сделать Эвал). Большинство примеров, которые я вижу, имеют код прямо на странице aspx с использованием встроенного синтаксиса <% #. </p>
Пример встроенного кода ASP.NET:
<asp:Literal ID="litExample" runat="server"
Text='<%# Eval("ExampleField").ToString() %>' />
Пример того, как я предпочитаю это делать:
В aspx:
<asp:Literal ID="litExample" runat="server"
OnDataBinding="litExample_DataBinding" />
В коде позади .cs:
protected void litExample_DataBinding(object sender, System.EventArgs e)
{
Literal lit = (Literal)(sender);
lit.Text = string.Format("{1} - {2}",
Eval("ExampleField").ToString(),
Eval("ExampleField2").ToString());
}
Я лично предпочитаю метод codebehind, потому что он поддерживает чистоту моих страниц aspx, и у меня нет всего этого встроенного кода повсюду, и следующий парень просто знает, что всегда ищет в файлах .cs изменения кода. Разделение представления и кода также поддерживается таким образом, поскольку HTML-код является только заполнителями, а кодовая привязка определяет, что на самом деле передается под контроль.
Теперь это очень простые примеры. Поле может быть целым числом, которое вы хотите отформатировать с ведущими 0 или DateTime, для которого требуется определенный формат и т. Д. Также могут потребоваться все виды манипуляций и кода, чтобы получить окончательное значение, которое должно храниться в свойстве «Текст» по адресу конец.
Где вы рисуете линию и перемещаете ее в код, если вы используете встроенный код?
Каковы плюсы и минусы в том или ином случае?
Один из них требует больше ресурсов, чем другой?
Редактировать. Примечание: Я не говорю о назначении значения элементу управления, который находится только на странице, а элементу, к которому привязана база данных, поскольку он существует в шаблоне повторителя или в шаблоне элемента сетки и т. Д. Очевидно, что буквальное место на странице можно просто назначить в коде.
Редактировать Примечание: Я думал, что получу больше откликов, особенно в отношении накладных расходов. Большинство людей НЕ используют события OnDataBinding?