302 votes

Différence entre ViewResult() et ActionResult()

Quelle est la différence entre et dans ASP.NET MVC ?

381voto

Divi Points 4311

ActionResult est une classe abstraite qui peut avoir plusieurs sous-types.

ActionResult Sous-Types

  • ViewResult - Rend un spécifiés vue du flux de la réponse

  • PartialViewResult - Rend un spécifiés partie du flux de la réponse

  • EmptyResult - Une réponse vide est retournée

  • RedirectResult - Effectue une redirection HTTP vers une URL spécifiée

  • RedirectToRouteResult - Effectue une redirection HTTP vers une URL qui est déterminée par le le moteur de routage basé sur les données de la route

  • JsonResult - Sérialise un ViewData objet au format JSON

  • JavaScriptResult - Retourne un morceau de code JavaScript qui peut être exécuté sur le client

  • ContentResult - Écrit le contenu dans le flux de réponse, sans exiger de vue

  • FileContentResult - Retourne un fichier pour le client

  • FileStreamResult - Retourne un fichier pour le client, qui est fourni par un Ruisseau

  • FilePathResult - Retourne un fichier pour le client

Ressources

124voto

RPM1984 Points 39648

ActionResult est une classe abstraite.

ViewResult dérivé ActionResult. D’autres classes dérivées incluent JsonResult et PartialViewResult.

Vous déclarer de cette façon vous pouvez tirer parti du polymorphisme et différents types de retour dans la même méthode.

par exemple :

31voto

RickAnd - MSFT Points 3741

C’est pour la même raison que vous n’écrivez pas toutes les méthodes de chaque classe pour retourner « objet ». Soyez aussi précis que possible. Ceci est particulièrement utile si vous avez l’intention d’écrire des tests unitaires. Aucuns plus stable ne retournent des types et/ou coulée le résultat.

20voto

Robert Levy Points 18154

ViewResult est une sous-classe de ActionResult. La méthode View retourne un ViewResult. Si vraiment ces extraits de deux code font exactement la même chose. La seule différence est qu’avec la ActionResult un, votre contrôleur n’est pas prometteur pour retourner une vue - vous pouvez changer le corps de la méthode pour retourner sous certaines conditions un RedirectResult ou autre chose sans modifier la définition de méthode.

12voto

Zaid Masud Points 4536

Alors que d'autres réponses ont noté les différences correctement, notez que si vous êtes en fait en retour d'un ViewResult seulement, c'est mieux pour revenir le plus spécifique plutôt que sur la base de ActionResult type. Une exception à ce principe, c'est quand votre méthode retourne plusieurs types dérivés de ActionResult.

Pour une discussion complète sur les raisons de ce principe veuillez voir la discussion à ce sujet ici: Doit ASP.NET MVC Méthodes de Contrôleur de Retour ActionResult?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X