En asp.net mvc hay ViewResult para devolver una vista y ActionResult para devolver lo que quieras, entonces ¿hay alguna buena razón por la que debería usar ViewResult en lugar de ActionResult cuando estoy seguro de que devolveré una vista?ViewResult o ActionResult | ¿Tiene sentido usar ViewResult si ActionResult es bueno para todo de todos modos?
Respuesta
ActionResult
es la clase base general de la que se derivan todos los demás resultados, como ViewResult
, JsonResult
y así sucesivamente.
De esta manera puede devolver múltiples tipos de resultados como JSON y XML desde el mismo método.
Debe usar ViewResult para hacer que el código sea más legible y encuentre errores más fáciles, pero también puede haber otros beneficios.
Como utilizo el patrón POST-REDIRECT-GET, escribí algunas pruebas para comprobar si cada método [HttpPost] devuelve RedirectToRouteResult. Si defino otro tipo de resultado en el método [HttpPost], automáticamente no pasa la prueba. Esto me impide devolver View (modelo) en el método de publicación.
Si desea realizar pruebas unitarias, cámbielo en el controlador de ActionResult a ViewResult. Entonces tendrás el intellisense en tu Controlador de Prueba y la vida es buena.
Acabo de recibir accidentalmente la misma pregunta hace algunos días y Google vino a ayudarlo rápidamente. Básicamente no hay ningún problema de rendimiento aquí, es problema de codificación, si alguno.
Esta es una breve pero útil post: http://www.techiesblog.com/post/2862100163/viewresult-vs-actionresult-asp-net-mvc
Ese enlace no es muy útil, ya que requiere que ingrese una contraseña antes de poder ver la página, pero no ofrece ninguna forma de registrarse en el sitio. – DOK
No fue en el momento en que contesté aquí. Parece que no es un formulario de inicio de sesión como de costumbre, el autor probablemente hizo su blog privado. –
Es por la misma razón no se escribe todos los métodos de cada clase para volver "objeto". Debes ser tan específico como puedas. Esto es especialmente valioso si planea escribir pruebas unitarias. No más tipos de devolución de prueba y/o emitiendo el resultado.
Si es demasiado específico, relacionará sus métodos con su implementación. Por ejemplo, devuelva 'IEnumerable
- 1. ¿Cómo puedo redirigir dentro de una función ViewResult o ActionResult?
- 2. ASP.NET MVC ViewResult
- 3. Devolver JsonResult utilizando ActionFilter en ActionResult en un controlador
- 4. ASP.NET MVC Javascript ActionResult
- 5. Volviendo vacío ActionResult
- 6. Atributos personalizados en ActionResult
- 7. Create common ActionResult
- 8. Razonamiento detrás de ASP.NET MVC ActionResult es una clase abstracta?
- 9. return bool de asp.net mvc actionresult
- 10. ¿Por qué la mayoría del código del controlador de muestra MVC devuelve ActionResult?
- 11. ASP.NET MVC: ¿Cómo convertir un ActionResult a una cadena?
- 12. MVC: ¿Cómo enrutar /sitemap.xml a un ActionResult?
- 13. [HttpPost] public ActionResult Create (colección FormCollection) VERSUS [HttpPost] public ActionResult Create (Cena)
- 14. ¿Es una buena práctica especificar explícitamente el tipo de ActionResult devuelto por un controlador en ASP.NET MVC
- 15. a redirigir a MVC ActionResult de FileResult
- 16. Cómo pasar un parámetro opcional en ActionResult
- 17. ASP.NET MVC - Combine el resultado Json con ViewResult
- 18. ¿Cómo obtener datos del modelo de un ViewResult en ASP.NET MVC RC1?
- 19. ¿Cuál es el punto del tipo de retorno ActionResult?
- 20. MVC3 Redirigir a la ruta desde ActionResult
- 21. Enviar MVC ActionResult a la impresora
- 22. ¿Tiene sentido usar servidores web con estado?
- 23. ¿Filtros de acción MVC usando parámetros pasados a ActionResult?
- 24. ¿Usar demasiada estática es malo o bueno?
- 25. ASP.NET MVC Controller fileContent ActionResult llamada a través de AJAX
- 26. ¿Tiene sentido usar la semántica de movimiento para el operador + y/o el operador + =?
- 27. Resaltar TODO en todos los modos de programación
- 28. ¿Devuelve XML de la acción de un controlador en ActionResult?
- 29. ¿Tiene sentido usar redis y mongodb?
- 30. ¿Tiene sentido usar un grupo de Actores?
¿Hace alguna diferencia, como por ejemplo la página se renderizará más rápido, o va a haber menos memoria utilizada con ViewResult en lugar de ActionResult o algo así? – Omu
No, realmente no importa en absoluto. La convención MVC de ASP.NET está haciendo que el tipo de retorno sea 'ActionResult' y usted devuelve un tipo derivado. –