如果我有一个返回具有属性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'的方法?
答案 0 :(得分:2)
DataBinder.Eval Method (Object, String)的官方文件非常清楚:
表达式:从容器对象到公共属性的导航路径 要放在绑定控件属性中的值。这必须是一个 由句点分隔的属性或字段名称字符串,例如 表[0] .DefaultView。[0] .P#或C#中的价格 表(0).DefaultView。(0).Visual Basic中的价格
因此如果Colors定义了一个索引器(this[int index]
)属性,第二个表达式应该可以正常工作。