通过asp .net对象数据源从列表访问对象属性

时间:2011-08-12 06:18:27

标签: c# asp.net objectdatasource

如果我有一个返回具有属性FavoutieColoirs作为List的Person的ObjectDataSource,我是否可以通过ASP标记中的某些表示法访问其中一种颜色进行显示?

即。如果Person有一个Name属性,我可以使用

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

我可以使用

之类的东西
<%# DataBinder.Eval(Container.DataItem, "Colours[0]") %>

或者甚至可能

<%# DataBinder.Eval(Container.DataItem, "Colours.Select(x => x.ColourName == 'Blue')" %>

(很确定最后一个不起作用,但我希望有一些方法可以实现第二个)。

如果我不能这样做并且想透明地列出“列表中的第一项”(比如说),我是否必须为Person添加一个返回单个项目的'FirstFavouriteColour'的方法?

1 个答案:

答案 0 :(得分:2)

DataBinder.Eval Method (Object, String)的官方文件非常清楚:

  

表达式:从容器对象到公共属性的导航路径   要放在绑定控件属性中的值。这必须是一个   由句点分隔的属性或字段名称字符串,例如   表[0] .DefaultView。[0] .P#或C#中的价格   表(0).DefaultView。(0).Visual Basic中的价格

因此如果Colors定义了一个索引器(this[int index])属性,第二个表达式应该可以正常工作。