typer retourné JSON en utilisant monorail
-
16-09-2019 - |
Question
J'appelle la méthode suivante dans mon contrôleur à l'aide .getJSON $ ()
[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 at-il une meilleure façon de faire ce que je fais? Dois-je typer les données que je suis de retour ou cette approche est-elle suffisante?
Merci.
La solution
je voudrais utiliser une saillie (SetProjection()
) et SetResultTransformer()
à saisir fortement le résultat à un DTO.
Voir:
- http://www.nhforge.org/doc /nh/en/index.html#querycriteria-projection
- http://www.junasoftware.com/blog/nhibernate -setresulttransformer-et-dto.aspx
- http: / /ayende.com/Blog/archive/2007/08/30/Slicing-amp-Dicing-Queries-with-NHibernate.aspx
- http://devlicio.us/blogs/derik_whittaker/archive/2009/05/27/nhibernate-amp-setprojects-setprojects-w-list-gotcha.aspx
Autres conseils
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 cette aide.
Tout d'abord, je change la valeur de retour de l'action à un IList ...
Je pense que la session fermée erreur peut provenir d'une exécution tardive des « champs var ». Si vous changez votre déclaration de retour à fields.ToList (), qui forcera l'exécution de l'expression lambda et vous pourriez se 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();
}