2009-11-18 11 views
0

L'idée est d'utiliser les mêmes méthodes d'action pour différents types de résultats I.E.ActionResult helper et différents types résolveur

/catégorie/détails /? ResultFormat = JSON

/catégorie/détails /? ResultFormat = xml

donc d'avoir une sorte d'aide ActionResult qui contient les paires enregistrées de valeur résolveurs

"JSON", JsonValueResolver

"xml", XmlResolver

etc ... est déjà là solution pour cela ou je dois penser une sorte de résolveur personnalisé? Automapper a une bonne solution pour la résolution de valeur. Des idées?

Répondre

1
public class SmartResult : ActionResult 
{ 
    public override void ExecuteResult(ControllerContext context) 
    { 
     if (context == null) 
     { 
      throw new ArgumentNullException("context"); 
     } 

     if (context.HttpContext.Request.QueryString["ResultFormat] == "json") 
     { 
      JavaScriptSerializer serializer = new JavaScriptSerializer(); 
      context.HttpContext.Response.Write(serializer.Serialize(this.Data)); 
     } else if(context.HttpContext.Request.QueryString["ResultFormat] == "xml") 
        { 
       ...serialize using xmlserializer 
     }else{ 
      throw new InvalidOperationException(); 
     } 
    } 

    public object Data { get; set; } 
}