Je tente d'écrire un filtre qui enveloppe des données pour suivre le Spécification de l'API JSON et jusqu'à présent, je l'ai Travailler sur tous les cas où je retourne directement une actionResulte, telle que Toutefois , à l'heure est là pour que je puisse définir quelque chose pour faire Pour le contexte, voici les fichiers exacts: p> TestController.cs p> jsonapifilter.cs p> complextypejson code>. J'essaie de le faire fonctionner dans des situations telles que
complextype code> où je n'ai pas besoin d'exécuter constamment la fonction
json code>.
Public Override Noid OnactionExecuted (ActionExecutedContercontextercontextercontextercontext) Code> S'exécute lorsque je navigue à
ComplexType CODE>, le
filtreContext.result code> est un résultat de contenu, que est juste une chaîne où
filtercontext.result.content code> est simplement: p>
complexes Code> devient
JSONRESULT code> plutôt que
contentResult code>? p>
3 Réponses :
Il y a deux options:
1.Utilisez L'Apicontroller retournera le résultat JSON et le sérialisateur par défaut est 2.fraper votre réponse avec votre propre var result = filterContext.Response.Content.ReadAsStringAsync();
Oui, ce type de demande devrait être traité par une API. Mais qu'est-ce qui ne va pas avec l'envoi du résultat OOB JSON code>
En fin de compte, la combinaison de l'actionResulte personnalisée et de mon attribut de filtre a conduit au comportement souhaité. Merci pour l'explication, c'était génial!
Je pense que c'est ce que vous recherchez: de @roosteronacid: Retour JSONRESULT Actionfilter p>
blockQuote> p>
Je viens de rencontrer le même problème et j'ai trouvé une approche légèrement différente.
L'idée de base était de NotherDev .
Je voudrais introduire un Dans ce cas, chaque requête commençant par "/ API /" aura transformé le résultat de JSON, cependant uniquement lorsque le pour Dans un cas, vous utilisez des méthodes d'action ASYNC, vous devez hériter de iactionInvoker code>.
acompteReturnValue code> n'est pas un type hérité de
ActionResult code> Déjà. P>
iactionInvoker code> est résolu par
dépendencyResolver code>, vous devez donc définir l'enregistrement dans votre conteneur de COI préféré que vous avez définir comme
dépendencyresolver code>. p>
jsonresult code> Vous pouvez utiliser l'intégré ou Ce . p>
asynccontrolleractioninvoker code> au lieu de < Code> ControllerActionInvoker Code> Et je suppose que vous devrez ajouter un autre enregistrement pour
iAsyncACTIONInvoker code> aussi. Je ne suis pas sûr des changements dans la partie ASYNC de l'invocateur lui-même. P> p>
Pouvez-vous montrer plus de votre code? Nous fournir plus de contexte? Expliquez plus de termes à ceux qui sont inconnus avec votre API JSON?
Aucun de cela n'est spécifique à mon API JSON, mais j'ai fourni les fichiers exacts du contrôleur de filtrage et de test.
Ainsi, vous ne pouvez pas accéder à votre liste dans la méthode code> composeresultmodel code >.am I correcte?
Si vous préférez utiliser une méthode d'action pour renvoyer vos demandes asynchronisées, pourquoi ne pas utiliser le
json code> actionResult?