什么是标准的ASP.net数据绑定语法?

时间:2012-05-14 17:47:43

标签: asp.net data-binding databinder

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文档中我看到:

  

enter image description here 注意

     

由于此方法执行后期绑定评估,在运行时使用反射,与标准ASP.NET数据绑定语法相比,可能会导致性能明显变慢。

(重点补充)

所以这解释为什么我有Eval的记忆是坏的”。但 “标准的ASP.NET数据绑定语法”?

奖金阅读

3 个答案:

答案 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"]) %>