1

我是 C# 新手(现在正在学习它),并且选择了 FB 和 C# Facebook SDK 作为测试项目来学习东西(可能不是一个好主意)。所以这就是问题所在。

我正在使用 VS 2010,ASP.NET MVC 3

我正在使用以下代码从 FB 检索一些数据

public ActionResult FBLandingPageFinal ( string accessToken )
        {
 var newfb = new FacebookClient ( accessToken );
 dynamic FQLResultSet = newfb.Get ( "fql", new { q = "select uid, name from user where is_app_user = 1 and uid in (SELECT uid2 FROM friend WHERE uid1 = me())" } );
 ViewBag.FQLResultSet = FQLResultSet;

         }

现在这以以下格式返回json格式的数据

{
  "data": [
    {
      "uid": XXXXX, 
      "name": "User Name 1"
    }, 
    {
      "uid": XXXXX, 
      "name": "User Name 2"
    }, 
    {
      "uid": XXXXX, 
      "name": "User Name 3"
    }
  ]
}

到目前为止一切正常,现在任何人都可以指导我如何从我的 aspx 页面上的这个 viewbag 对象中提取数据(我没有使用剃刀语法

现在在aspx页面上这是我想要实现的

<ul>

<%
 foreach (var item in ViewBag)
{ 
%>

<li><a href="#" ><img src="https://graph.facebook.com/<%={uid from viewbag}%>/picture" alt="" /></a> <%{name from ViewBag} %></li>
<%
}

%>

任何建议都将是真正的帮助,我感谢你们在阅读这么长的问题时所付出的时间和精力,因为我试图解释我在做什么。

期待指导

4

1 回答 1

1

在将它放入 ViewBag 之前,您需要将该 JSON 反序列化为一个对象。您可以使用JavaScriptSerializer,就像这样

public ActionResult FBLandingPageFinal (string accessToken)
    {
     var newfb = new FacebookClient (accessToken);
     dynamic jsonResult= newfb.Get ( 
                             "fql", 
                              new { 
                               q = "select uid, name from user where is_app_user = 1 and uid in (SELECT uid2 FROM friend WHERE uid1 = me())" 
                                  });
     var serializer = new JavaScriptSerializer();
     ViewBag.FQLResultSet = serializer.Deserialize<ImageSet>(jsonResult);
    }

// You have to define this class
public class FbImage
{
   public string string name {get; set;}
   public string string uid {get; set;}
}

// And this one
public class ImageSet
{
   public List<FbImage> images {get; set;}
}

然后,在您的视图中,您可以执行以下操作:

<ul>
<%foreach (var item in ViewBag.FQLResultSet.images ){%>
<li>
   <a href="#" >
    <img src="https://graph.facebook.com/<%={item.uid}%>/picture" alt="" />
   </a> <%{item.name} %>
</li>
<%}%>
于 2012-08-18T18:10:13.660 回答