我想我会问这个问题,看看为什么许多示例和人们更喜欢在 aspx 代码中使用内联数据绑定(bind),而不是在使用 WebForms 时实现 OnDataBinding 事件。
对于任何数据绑定(bind)控件(例如 Repeater、GridView 等),如果我需要做任何不是开箱即用的事情,我总是为字段级控件实现 OnDataBinding 方法(例如,我需要做一个 Eval)。我看到的大多数示例都使用内联 <%# 语法将代码直接放在 aspx 页面中。
内联 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());
}
我个人更喜欢代码隐藏方法,因为它使我的 aspx 页面保持干净,而且我没有到处都是这些内联代码,下一个人只知道总是在 .cs 文件中查找代码更改。表示和代码的分离也以这种方式得到更好的维护,因为 HTML 只是占位符,而代码绑定(bind)决定了实际控制的内容。
现在这些都是非常基本的例子。该字段可以是一个整数,您想要使用前导 0 或需要特定格式的 DateTime 等进行格式化。它还可能需要各种操作和代码来获取应存储在“文本”属性中的最终值结束。
如果您使用内联代码,您在哪里画线并将其移至代码隐藏?
这两种方式的优缺点是什么?
一个比另一个占用更多的开销吗?
编辑注意:我不是在谈论为页面上的控件分配值,而是为正在数据绑定(bind)的控件分配值,因为它存在于转发器模板或 gridview 项目模板等中。 .. 显然,您可以在代码中分配页面上的文字。
编辑说明:我想我会收集更多的响应,尤其是关于开销的响应。大多数人不使用 OnDataBinding 事件吗?
最佳答案
我更喜欢相反的情况。我更愿意将我的代码隐藏限制在过程代码中,并将所有声明性代码保留在我的 Aspx 页面中。在上面的示例中,文字是绝对声明性的,因此(根据我的偏好)不属于代码隐藏。更强大的功能通常会出现在我的代码隐藏中,我不希望我的开发人员在试图理解它时不得不筛选一堆初始化行而感到困惑。
关于c# - OnDataBinding 与 Inline : pros, 缺点和开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/702343/
相关文章:
.net - 在大型 .NET 代码库中,评论真的被普遍认为是邪恶的吗?
c# - 根据另一个 DropDownList 的选择动态填充 DropdownList
c# - 如何使用层次结构级别填充 TreeViewControl?
c# - 客户端证书不是由.Net App使用TLS1.2发送的
c# - ASP.NET Web页面镜像,用绝对路径替换所有相对URL
c# - 类型 `Kaitai.Elf' 已经包含 `Bits' 的定义
©2023 IT工具网