【发布时间】:2011-01-24 14:22:32
【问题描述】:
我想我会问这个问题,看看为什么许多示例和人们更喜欢在 aspx 代码中使用内联数据绑定而不是在使用 WebForms 时实现 OnDataBinding 事件。
对于任何数据绑定控件(例如,Repeater、GridView 等),如果我需要执行任何不是开箱即用内置的操作(例如,我需要做一个评估)。我看到的大多数示例都使用内联
内联 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 等。它还可能需要各种操作和代码来获取应存储在“文本”属性中的最终值结束。
如果您使用内联代码,您在哪里画线并将其移动到代码隐藏?
这两种方法的优缺点是什么?
一个比另一个占用更多的开销吗?
编辑说明:我不是在谈论将值分配给仅在页面上的控件,而是因为它存在于转发器模板或 gridview 项目模板等中而被数据绑定的控件。 .. 显然,您可以在代码中分配页面上的文字。
编辑说明:我想我会收集到更多的回应,尤其是关于开销的问题。大多数人不使用 OnDataBinding 事件吗?
【问题讨论】:
标签: c# asp.net coding-style code-behind