Doit ASP.NET MVC Méthodes de Contrôleur de Retour ActionResult?

Étant nouveau ASP.NET MVC, je me demandais à propos de la signature des méthodes de Contrôleur. Dans tous les exemples que j'ai vu, ils semblent toujours revenir ActionResult, même s'ils reviennent un ViewResult instance ou similaire.

Ici est communément vu l'exemple:

public ActionResult Index()
{
    return this.View();
}

Dans ce cas, ne serait-il pas plus logique de déclarer la méthode public ViewResult Index(), et d'obtenir plus de soutien de type?

L'expérimentation indique que cela fonctionne, il semble donc possible.

Je me rends compte qu'il peut y avoir des situations où le polymorphisme est souhaitée (par exemple, si vous souhaitez rediriger uniquement dans certaines situations, mais afficher une vue dans d'autres situations), mais si la méthode toujours retourne vue, je trouverais une ViewResult plus souhaitable.

En termes de compatibilité future, ActionResult évidemment fiable signature, mais si l'on contrôle l'ensemble de la base de code, il est toujours possible de modifier une signature de la méthode d'une manière plus générale le type de retour si cela devait être nécessaire à l'avenir.

Sont les autres considérations que je ne suis pas au courant, ou devrais-je simplement aller de l'avant et de le déclarer mon contrôleur de méthodes avec des types de retour?

InformationsquelleAutor Mark Seemann | 2009-06-20