如何使用包含点(。)的列名称的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()