输入关键字进行搜索

登录

在标记中将数据绑定到转发器或以编程方式绑定转发器之间的区别是什么

在两种情况下绑定例如名为(“名称”)的列之间有什么区别?并且有任何性能差异吗? 1-在标记中分配数据
<asp:Label ID="Name_Lbl" runat="server" Text='<%# Eval("Name") %>' ></asp:Label>
2-为转发器ItemTemplate中的每个控件定义一个控制对象并找到它,然后将“Name”列中的数据分配给它
e.Item.FindControl("Name_Lbl")
    
已邀请:
您可能会得到相同的结果,但性能可能会有所不同。数据绑定表达式(
Eval
)使用引擎下的反射来绑定数据,而
FindControl
将向上走控制树以找到必要的控件。反射确实有一些性能成本(取决于你查找了多少属性/名称,虽然一旦查找了一个有效的描述符确实被缓存)。另一方面,控制树行走的开销将取决于控制树的深度。 IMO,数据绑定语法更优雅,我更喜欢 - 性能必须以相对的术语来看 - 与总请求时间相比,我花费多少额外费用,因此与其他活动(如实际获取)相比,数据绑定成本可以忽略不计数据。说数据绑定存在变化,避免反射 - 请参阅http://weblogs.asp.net/jgalloway/archive/2005/09/20/425687.aspx。 很多时候,我使用代码隐藏属性来提供强类型属性以便于使用。例如,当repeater与实体类ProductDetails的数组/列表/枚举绑定时,在代码隐藏中,我使用诸如
protected ProductDetails GetProduct(RepeaterItem container)
{
   return (ProductDetails)container.DataItem;
}
在加价中,
<asp:Label ID="Name_Lbl" runat="server" Text='<%# GetProduct(Container).Name %>' ></asp:Label>
更不用说你使用string6ѭ进行intellisense工作了它的字符串输入     
没有区别,.NET在后端创建了相同的ControlTree。本文解释了编译期间ASP.NET的内幕。这是一篇较旧的文章,但相关。 ASP.NET 2.0中的编译和部署     

要回复问题请先登录注册