2013-05-10 8 views
10

sto avendo problemi con JSON e listeC# Come restituire List <> Come JSON

Sto cercando di restituire un elenco di classe Chat Entity, ma quando provo a restituirlo i piagnucola compilatore. Ho anche cercato di tornare IEnumerable <> ma lo stesso errore è venuto

cosa posso fare?

qui è la mia funzione che viene restituita l'oggetto,

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

Questa è la funzione Chat Ottenere nuovi

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;  
} 

e questo è l'Ajax chiamata

$.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"); } 
}); 

risposta

18

Il compilatore è scontento del tuo codice perché stai dicendo che il tuo metodo (sto indovinando il metodo di azione) è d efinito per restituire List<Chat> e si sta restituendo JsonResult. Se si utilizza ASP.NET MVC dovrebbe apparire così:

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

    return Json(list); 
} 
+0

Questo ha risolto il mio problema! Grazie per la chiara spiegazione! –

Problemi correlati