¿Deben los métodos del controlador MVC de ASP.NET devolver ActionResult?

Al ser nuevo en ASP.NET MVC, me he estado preguntando acerca de la firma de los métodos de Controller. En todos los ejemplos que he visto, siempre parecen devolver ActionResult, incluso si realmente devuelven una instancia de ViewResult o similar.

Aquí hay un ejemplo comúnmente visto:

<code>public ActionResult Index()
{
    return this.View();
}
</code>

En tal caso, ¿no tendría más sentido declarar el método comopublic ViewResult Index(), y obtener soporte de tipo mas fuerte?

La experimentación indica que esto funciona, por lo que parece posible.

Me doy cuenta de que puede haber situaciones en las que se desee el polimorfismo (por ejemplo, si desea redireccionar solo en ciertas situaciones, pero muestra una vista en otras situaciones), pero si el métodosiempre devuelve una vista, encontraría un ViewResult más deseable.

En términos de compatibilidad futura, ActionResult obviamente proporciona una firma más robusta, pero si uno controla la base del código completo, siempre es posible cambiar la firma de un método a un tipo de retorno más general si eso fuera necesario en el futuro.

¿Hay alguna otra consideración que no conozca, o debo seguir adelante y declarar mis métodos de controlador con tipos de devolución específicos?

Respuestas a la pregunta(6)

Su respuesta a la pregunta