In asp.net mvc gibt es ViewResult für die Rückgabe einer Ansicht und ActionResult für die Rückgabe, was auch immer Sie wollen, also gibt es einen guten Grund, warum ich ViewResult statt ActionResult verwenden sollte, wenn ich sicher bin, dass ich eine Ansicht zurückgeben werde?ViewResult oder ActionResult | macht es Sinn, ViewResult zu verwenden, wenn ActionResult sowieso für alles gut ist?
Antwort
ActionResult
ist die allgemeine Basisklasse, die alle anderen Ergebnisse von wie , JsonResult
und so weiter abgeleitet sind.
Auf diese Weise können Sie mehrere Arten von Ergebnissen wie JSON und XML von derselben Methode zurückgeben.
Sie sollten ViewResult verwenden, um Code lesbarer zu machen und Fehler leichter zu finden, aber es kann auch andere Vorteile geben.
Da ich POST-REDIRECT-GET-Muster verwenden, schrieb ich einige Tests, um zu überprüfen, ob jede [HttpPost] -Methode RedirectToRouteResult zurückgibt. Wenn ich einen anderen Ergebnistyp in der Methode [HttpPost] definiere, wird der Test automatisch nicht bestanden. Dies verhindert, dass ich View (Modell) in der Post-Methode zurückgebe.
Wenn Sie Komponententests durchführen möchten, ändern Sie es in der Steuerung von ActionResult zu ViewResult. Dann haben Sie die Intelligenz in Ihrem Test Controller und das Leben ist gut.
Ich habe gerade vor ein paar Tagen versehentlich die gleiche Frage bekommen und Google kam, um schnell zu helfen. Grundsätzlich gibt es hier kein Leistungsproblem, es ist Coding-Problem, wenn überhaupt.
Dies ist eine kurze, aber nützliche Blog-Post: http://www.techiesblog.com/post/2862100163/viewresult-vs-actionresult-asp-net-mvc
Dieser Link ist nicht sehr hilfreich, da Sie ein Passwort eingeben müssen, bevor Sie die Seite sehen können, aber keine Möglichkeit bietet, sich für die Site zu registrieren. – DOK
Es war nicht zu der Zeit, als ich hier antwortete. Es scheint, dass kein Login-Formular wie üblich, der Autor wahrscheinlich seinen Blog privat gemacht hat. –
Es ist aus dem gleichen Grund Sie nicht jede Methode jeder Klasse schreiben zurückzukehren „Objekt“. Sie sollten so genau wie möglich sein. Dies ist besonders nützlich, wenn Sie Komponententests schreiben möchten. Keine weiteren Rückgabetypen und/oder Ergebnisse.
Wenn Sie zu spezifisch sind, verbinden Sie Ihre Methoden mit ihrer Implementierung. Zum Beispiel gibt 'IEnumerable
- 1. Wie kann ich innerhalb einer ViewResult- oder ActionResult-Funktion umleiten?
- 2. Was ist der Sinn des ActionResult-Rückgabetyps?
- 3. Unterschied zwischen Aufgabe <ViewResult> und ViewResult
- 4. ASP.NET MVC ViewResult Frage
- 5. ASP.NET MVC Rückkehr Viewresult
- 6. ASP.NET MVC zurückgeben Viewresult als HTML-Datei
- 7. Unit Testing in Viewresult Asp.NET MVC
- 8. MVC ActionResult ein anderes ActionResult aufrufen
- 9. IdentityResult zu ActionResult
- 10. MVC ActionResult für große Videodateien
- 11. Wann JsonResult über ActionResult
- 12. Warum schlägt ViewResult die MSPecMVC-ShoulBeAView-Assertion fehl?
- 13. MVC5 Asynchron ActionResult. Ist das möglich?
- 14. invalidoperationexception on actionresult
- 15. ASP.NET MVC Javascript ActionResult
- 16. MVC3 Benutzerdefiniertes ActionResult
- 17. MVC: Wie route /sitemap.xml zu einem ActionResult?
- 18. MVC Url relativ zu Variable ActionResult
- 19. MVC Beitrag nicht die richtige ViewResult
- 20. Test benutzerdefiniertes ActionResult
- 21. Json.Net Und ActionResult
- 22. Benutzerdefinierte Attribute auf ActionResult
- 23. Macht es Sinn, Web Worker für ein Spiel zu verwenden?
- 24. Unit Testing Action Filter - Wie Spot ViewResult
- 25. ActionResult zurück zur Seite, die es genannt
- 26. So erhalten Sie den Wert von ViewData von einem ActionResult zu einem anderen ActionResult
- 27. Angepasstes ActionResult-Modell für alle PartialViews
- 28. ASP.NET MVC ExecuteResult vs ActionResult
- 29. MVC filtering actionResult von dropdownlist
- 30. Rückgabe JsonResult mit einem ActionFilter auf einem ActionResult in einem Controller
macht es einen Unterschied, wie zum Beispiel die Seite wird schneller gerendert, oder wird weniger Speicherplatz mit ViewResult anstelle von ActionResult oder etwas ähnlichem verwendet? – Omu
Nein, es spielt überhaupt keine Rolle. Die ASP.NET MVC-Konvention hat den Rückgabetyp "ActionResult" und Sie geben einen abgeleiteten Typ zurück. –