5

Microsoft 对使用控件进行数据绑定asp:Repeater的介绍给出了获取值的语法:

<b><%# DataBinder.Eval(Container.DataItem, "orderid") %></b>

此语法在 ASP.net控件的其他介绍中Repeater重复:

<a href="<%# DataBinder.Eval(Container.DataItem, "URL") %>">...</a>

但我记得这种语法是“坏的”和“错误的”。从DataBinder.Eval我看到的 MSDN 文档中:

在此处输入图像描述 笔记

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

(重点补充)

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

奖金阅读

4

3 回答 3

3

我认为你可以做一个演员来避免“后期绑定”的惩罚:

<%# (((System.Data.DataRowView)Container.DataItem)["URL"]) %>

现在假设您将性能提高了 x%。对您的应用程序是否值得?权衡(在我看来)是可读性较差。

于 2012-05-14T18:15:53.580 回答
1

好吧,“标准 ASP.NET 数据绑定”通常是指将数据从数据源绑定到命名控件,例如表单上的文本框,或者可以绑定整个表格的旧 GridView。

如果您只需要数据的只读显示,您可以考虑使用 foreach 循环或 DataReader 将数据解析为 stringBuilder 中的原始 HTML,然后将 StringBuilder 转储为 Literal。

于 2012-05-14T18:41:44.090 回答
0

此 MSDN 页面描述了标准数据绑定语法,如下所示:

例如,在以下代码片段中,整数显示为货币字符串。使用标准 ASP.NET 数据绑定语法,您必须首先转换数据行的类型才能检索数据字段 IntegerValue。接下来,这作为参数传递给 String.Format 方法:

<%# String.Format("{0:c}", ((DataRowView)Container.DataItem)["IntegerValue"]) %> 
于 2012-05-14T18:47:23.133 回答