2012-10-18 7 views
0

J'ai une classe qui ressemble à ceci:personnalisée sérialisation API ASP.NET MVC

public class Position 
{ 
    public int X { get; set; } 
    public int Y { get; set; } 
} 

En supposant un contrat de données similaire à celui-ci:

[DataContract] 
public class MyModel 
{ 
    [DataMember(name="position")] 
    public Position Position { get; set; } 
} 

Je veux envoyer cette valeur de position à la fois - et de le client en utilisant une valeur comme ceci:

JSON: { "position": "1,2" }

XML: <position>1,2</position>

Je vais juste ajouter que je ne suis pas essayer de le faire:

JSON: { "position": { "data": "1,2" } }

XML: <position><data>1,2</data></position>

Je préférerais ne pas injecter ceci dans tout le pipeline de sérialisation si possible. Je l'ai fait travailler sur un contrôleur Web, mais le contrôleur API s'avère un peu difficile. Quelle est la meilleure façon de procéder?

Merci

MISE À JOUR

Décidé dans ce cas d'utiliser les champs de position est comme (par exemple { "position": { "X": 1, "Y": 2 } }), mais je vais laisser cette ouverture et mise à jour si je viens à travers une solution.

+0

Comment l'avez-vous fait fonctionner sur le contrôleur MVC standard? –

Répondre

0

Vous pouvez utiliser un modèle de vue:

[DataContract] 
public class PositionViewModel 
{ 
    [DataMember(name = "position")] 
    public string Position { get; set; } 
} 

puis la carte entre votre modèle de domaine Position et votre modèle de vue dans l'action du contrôleur en cas de besoin.

Questions connexes