我想我会问这个问题,看看为什么很多例子和人们更喜欢在aspx代码中使用内联数据绑定而不是在使用WebForms时实现OnDataBinding事件.
对于任何数据绑定控件(例如,Repeater,GridView等),我总是为字段级控件实现OnDataBinding方法,如果我需要做任何不是开箱即用的东西(例如,我需要做一个Eval).我看到的大多数示例都使用内联<%#语法在aspx页面中使用了正确的代码.
内联ASP.NET代码示例:
<asp:Literal ID="litExample" runat="server"
Text='<%# Eval("ExampleField").ToString() %>' />
Run Code Online (Sandbox Code Playgroud)
我更喜欢这样做的例子:
在aspx中:
<asp:Literal ID="litExample" runat="server"
OnDataBinding="litExample_DataBinding" />
Run Code Online (Sandbox Code Playgroud)
在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());
}
Run Code Online (Sandbox Code Playgroud)
我个人更喜欢codebehind方法,因为它保持我的aspx页面干净,并且我没有所有这些内联代码,而下一个人只知道总是查看.cs文件中的代码更改.表示和代码的分离也以这种方式保持得更好,因为HTML只是占位符,而代码绑定正在确定实际控制的内容.
现在这些是非常基本的例子.该字段可以是您想要使用前导0格式化的整数,也可以是需要特定格式等的DateTime.它还可以采用所有类型的操作和代码来获取应存储在"Text"属性中的finally值.结束.
如果使用内联代码,在哪里绘制线并将其移动到代码隐藏?
这样做的优点和缺点是什么?
一个人比另一个人花费更多的开销吗?
编辑注意:我不是在谈论为页面上的控件分配值,而是将数据库分配给,因为它存在于转发器模板或gridview项目模板等中...显然,文字坐在页面上可以只在代码中分配.
编辑注意:我想我会收集更多响应,特别是关于开销.大多数人不使用OnDataBinding事件吗?