如何使用包含点(。)的列名称的Eval()?

在我的SQL Server表中有一个列slno. (是的,它包含一个点)在SQL Server中正常工作。 但是, 发出错误:

DataBinding:’System.Data.DataRowView’不包含名为’slno’的属性。

怎么解决这个问题? 我无法更改数据库中的列名:我从stored procedure获取数据,因此我无法修改它。

    

使用

 <%# ((DataRowView)Container.DataItem)["slno."] %> 

或者使用

 <%# DataBinder.Eval (Container.DataItem, "slno.") %> 

有关MSDN参考,请参阅http://msdn.microsoft.com/en-us/library/4hx47hfe.aspx

编辑 – 另一种选择:

 <%# DataBinder.GetPropertyValue(Container.DataItem, "slno.") %> 

编辑2 – 根据评论:

AFAIK Eval将字符串作为一个表达式处理,它使用一些规则进行评估 – 这些规则对点有特殊处理…

GetPropertyValue OTOH不适用这些规则(这意味着它不是Eval AFAIK的完全替代品),因此能够处理Eval点处理导致问题的情况(如本例所示)。

我使用DataBinder.GetPropertyValue()如下:

 DataBinder.GetPropertyValue(Container.DataItem, "Name of my Fields with(Parentheses)") 

并且像ASP.NET VB项目中的魅力一样工作。

不要使用DataBinder.eval() ; eval()无法在点(。)后读取字段。

相反,使用DataBinder.GetPropertyValue()