2009-08-14 7 views
0

J'appelle la méthode suivante dans mon contrôleur en utilisant $ .getJSON()typer JSON retourné à l'aide monorail

[return: JSONReturnBinder] 
    public object ProfileFields() 
    { 
     var userfields = _profileSvc.GetFields(282); 
     var fields = from f in userfields 
        select new {f.ID, f.FieldName}; 

     return fields; 
    } 

Mon _profileSvc revient avec des données supplémentaires que je ne ai pas besoin (en fait je reçois des erreurs NHibernate parce que la session est fermée).

Y a-t-il une meilleure façon de faire ce que je fais? Dois-je taper fortement les données que je retourne ou cette approche est-elle suffisante?

Merci.

Répondre

0
0

Tout d'abord, je change la valeur de retour de l'action à un IList ...

Je pense que l'erreur de fermeture de session peut provenir d'une exécution retardée de 'champs var'. Si vous changez votre déclaration de retour à fields.ToList(), qui forcera l'exécution de l'expression lambda et vous pouvez vous débarrasser de l'erreur de session:

[return: JSONReturnBinder] 
    public object ProfileFields() 
    { 
      var userfields = _profileSvc.GetFields(282); 
      var fields = from f in userfields 
         select new {f.ID, f.FieldName}; 

    return fields.ToList(); 
    } 
1

Avez-vous déjà essayé d'utiliser

[return: JSONReturnBinder(Properties = "ID,FieldName")] 
public object ProfileFields() 
{ 
     var userfields = _profileSvc.GetFields(282); 
    return userfields; 
} 

J'espère que cela aide.

Questions connexes