C#如何返回列表<>作为杰森

时间:2013-05-10 07:51:20

标签: asp.net-mvc json list asp.net-mvc-2

我遇到了Json和Lists的问题

我正在尝试返回Chat Entity类的列表但是当我尝试返回它时编译器发出呜呜声。 我还试图返回IEnumerable<>但同样的错误来了

我能做什么?

这是我的函数,它返回项目,

public List<Chat> GetNewChatPosts()
{ 
    var userID = U_rep.GetUserID(User.Identity.Name);
    var list = G_rep.GetNewestChat(0, userID);
    return Json(list);
}

这是获取最新聊天功能

public List<Chat> GetNewestChat(int gameID, int userID)
{ 
    var pos1 = (from p in n_db.ChatPos
                where p.userID == userID && gameID == p.gameID
                select p).SingleOrDefault();
    int pos;
    if (pos1 == null)
    {
        pos = 0;
        ChatPo n = new ChatPo();
        n.gameID = gameID;
        n.userID = userID;
        n.chatID = pos;

        n_db.ChatPos.InsertOnSubmit(n);
        n_db.SubmitChanges();
    }
    else
    {
        pos = pos1.ID;
    }

    var newIEnumerable = from chat in n_db.Chats
                            where chat.ID > pos
                            orderby chat.ID descending
                            select chat;
    List<Chat> newestChat = new List<Chat>();
    foreach (var n in newIEnumerable)
    {
        newestChat.Add(n);
    }

    var last = newIEnumerable.Last();

    pos1.ID = last.ID;

    n_db.SubmitChanges();

    return newestChat;    
}

这是Ajax调用

$.ajax({
    type: "GET",
    url: "/Game/GetNewChatPosts",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    data: JSON.stringify(text),
    success: function (data) {
        alert("success post");
    },
    error: function () { alert("error post"); }
});

1 个答案:

答案 0 :(得分:20)

编译器对您的代码不满意,因为您说您的方法(我猜测操作方法)被定义为返回List<Chat>并且您正在返回JsonResult。如果您使用的是ASP.NET MVC,它应该如下所示:

public ActionResult GetNewChatPosts()
{ 
    var userID = U_rep.GetUserID(User.Identity.Name);
    var list = G_rep.GetNewestChat(0, userID);

    return Json(list);
}