9
votes

Retourne JSONRESULT en utilisant un filtre d'action sur une actionRésulte dans un contrôleur

Je veux retourner le modèle (données) d'un contrôleur dans différents formats (JavaScript / XML / JSON / HTML) à l'aide d'Actionfilter. Voici où je suis à ce jour:

L'actionFilter: xxx

et la mise en œuvre de sa qualité: xxx

La méthode OnResultXecuting est appelée, mais je ne reçois pas le modèle (données) renvoyé et formaté comme objet JSON. Mon contrôleur fait simplement que la vue.


MISE À JOUR: Je suis la suggestion de la réponse de Darin Dimitrov à Cette question .


0 commentaires

3 Réponses :


-1
votes

Avez-vous essayé: xxx

avec un type de retour de JSONRESUT sur l'action du contrôleur?


1 commentaires

IRESULTFILTER.EnResulterSulting Retours Void. Et la classe JSON n'est pas disponible dans ce contexte.



1
votes

Avez-vous essayé d'implémenter votre code de filtrage dans la méthode OnactionExecuted , au lieu de OnResultexecuting ? Il est possible qu'au moment de la cuisson de ce dernier, il est trop tard pour changer le résultat (la sémantique étant », ok, nous avons le résultat en main et ce crochet est le feu juste avant ce résultat ici n'est exécuté"), mais Je n'ai pas le temps d'aller vérifier la source MVC pour être sûr.


0 commentaires

14
votes

C'était ce que je cherchais:

public class ResultFormatAttribute : ActionFilterAttribute, IActionFilter
{
    void IActionFilter.OnActionExecuted(ActionExecutedContext context)
    {
        context.Result = new JsonResult
        {
            Data = ((ViewResult)context.Result).ViewData.Model
        };
    }
}


0 commentaires