Microsoft对data-binding using the asp:Repeater
控件的介绍提供了获取值的语法:
<b><%# DataBinder.Eval(Container.DataItem, "orderid") %></b>
此语法在other introductions to the ASP.net Repeater
control上重复:
<a href="<%# DataBinder.Eval(Container.DataItem, "URL") %>">...</a>
但我记得这句话“坏”和“错”。从DataBinder.Eval
的MSDN文档中我看到:
注意
由于此方法执行后期绑定评估,在运行时使用反射,与标准ASP.NET数据绑定语法相比,可能会导致性能明显变慢。
(重点补充)
所以这解释为什么我有“Eval
的记忆是坏的”。但 是 “标准的ASP.NET数据绑定语法”?
答案 0 :(得分:3)
我认为你可以做一个演员以避免“后期绑定”惩罚:
<%# (((System.Data.DataRowView)Container.DataItem)["URL"]) %>
现在假设您将性能提高了x%。你的申请值得吗?权衡(在我看来)是可读性较差。
答案 1 :(得分:1)
“标准ASP.NET数据绑定”通常是指将数据从数据源绑定到命名控件,例如表单上的文本框,或者可以绑定整个表的旧GridView。
如果您只需要只读数据显示,可以考虑使用foreach循环或DataReader将数据解析为stringBuilder中的原始HTML,然后将StringBuilder转储为Literal。
答案 2 :(得分:0)
This MSDN page描述了标准数据绑定语法,如下所示:
在下面的代码片段中,例如,整数显示为货币字符串。 使用标准的ASP.NET数据绑定语法,必须先转换数据行的类型才能检索数据字段IntegerValue。接下来,它作为参数传递给String.Format方法:
<%# String.Format("{0:c}", ((DataRowView)Container.DataItem)["IntegerValue"]) %>