Я подумал, что задаю этот вопрос, чтобы понять, почему многие примеры и люди предпочитают использовать встроенную привязку данных в коде aspx и реализовать событие OnDataBinding при использовании WebForms.
Для любого управления привязкой данных (например, Repeater, GridView и т.д.) Я всегда реализую метод OnDataBinding для элементов управления на уровне поля, если мне нужно делать что-либо, что не построено из коробки ( например, мне нужно сделать Eval). Большинство примеров, которые я вижу, имеют код справа на странице aspx, используя синтаксис inline <% #.
Пример встроенного кода ASP.NET:
<asp:Literal ID="litExample" runat="server"
Text='<%# Eval("ExampleField").ToString() %>' />
Пример того, как я предпочитаю это делать:
В aspx:
<asp:Literal ID="litExample" runat="server"
OnDataBinding="litExample_DataBinding" />
В codebehind.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, которые нуждаются в определенном формате и т.д. Он также может принимать все виды манипуляций и кода, чтобы получить окончательное значение, которое должно быть сохранено в свойстве "Текст" в конец.
Где вы рисуете линию и переместите ее в код, если вы используете встроенный код?
Каковы плюсы и минусы для этого в любом случае?
Требуется ли больше накладных расходов, чем другие?
Редактировать Примечание: Я не говорю о назначении значения элементу управления, который находится только на странице, но который привязан к базе данных, потому что он существует в шаблоне ретранслятора или шаблоне элемента gridview и т.д... Очевидно, что буквально сидит на странице, которую вы можете просто назначить в коде.
Редактировать Примечание: Я думал, что я получу больше ответа, особенно в отношении накладных расходов. Большинство людей НЕ используют события OnDataBinding?