我正在构建一个使用Facebook API从特定相册中获取用户照片的应用程序(是的,我知道现在每个人都在构建照片应用程序)。在其中我有一个像这样的转发器:
<ItemTemplate>
<img src="<%# DataBinder.Eval(Container.DataItem, "src_big") %>" />
</ItemTemplate>
我执行实际数据绑定的代码如下所示:
profilePhotosTask = client.GetTaskAsync("fql", new { q = "select src_bigfrom photo where album_object_id = <<some photo album ID>>"}).ContinueWith(innerTask => {
dynamic photos = innerTask.Result;
CarouselRepeater.DataSource = photos[0];
CarouselRepeater.DataBind();
});
但是,运行此代码时,我在DataBinder.Eval上收到以下错误:
DataBinding: 'Facebook.JsonObject' does not contain a property with the name 'src_big'.
这很奇怪,因为我知道该对象具有此属性。它与动态类型的DataBinding有关吗?例如,当我创建一个包装该属性的新匿名类型时,它可以正常工作:
profilePhotosTask = client.GetTaskAsync("fql", new { q = "select src_bigfrom photo where album_object_id = 151858621509621"}).ContinueWith(innerTask => {
dynamic photos = innerTask.Result;
var urlList = new System.Collections.ArrayList();
foreach (var photo in photos[0]) {
urlList.Add(new { src_big = photo.src_big });
}
CarouselRepeater.DataSource = urlList;
CarouselRepeater.DataBind();
});
谢谢!
根据评论,我添加了一个屏幕截图,显示了当我添加断点并将鼠标悬停在CarouselRepeater.DataSource上时所看到的内容。