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

5

微软介绍使用asp:Repeater进行数据绑定控件时,提供了获取值的语法:

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

这个语法在其他介绍ASP.net Repeater 控件的文章中被重复使用:
<a href="<%# DataBinder.Eval(Container.DataItem, "URL") %>">...</a>

但是我记得这种语法被认为是“不好”和“错误”的。从DataBinder.Eval的MSDN文档中,我看到:

enter image description here 注意

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

(强调添加)

所以这解释了为什么我会记得Eval很糟糕”。但是什么是标准ASP.NET数据绑定语法呢?

额外阅读

3个回答

3

我认为,您可以使用强制类型转换来避免“后期绑定”的惩罚:

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

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

1

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

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


我正在做那件事(构建我想要的HTML)。但是有人建议我使用嵌套重复器来使它变得“更好”,以获得接近我想要的HTML。这就是为什么我不得不询问绑定语法的原因。 - Ian Boyd

0

这个MSDN页面描述了标准数据绑定语法如下:

In the following code fragment, for example, an integer is displayed as a currency string. With the standard ASP.NET data-binding syntax, you must first cast the type of the data row in order to retrieve the data field, IntegerValue. Next, this is passed as an argument to the String.Format method:

<%# String.Format("{0:c}", ((DataRowView)Container.DataItem)["IntegerValue"]) %> 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接