# ASP.NET MVC

Das ASP.NET MVC ist ein Webframework zur Entwicklung von Webanwendungen, das Paradigmen des Entwurfsmusters Model-View-Controller (MVC-Muster) befolgt.

## Hintergrund

Das vom Hersteller Microsoft entwickelte MVC-Framework basiert auf ASP.NET und ermöglicht Webanwendungen als ein Zusammenspiel der drei Rollen Model, View und Controller zu erstellen.
Ein Model repräsentiert einen Teil der Daten der Anwendung. Ein Controller handhabt Interaktionen des Benutzers oder anderer Komponenten und aktualisiert das Model, um eine Änderung im Status der Anwendung zu reflektieren und übergibt dann Informationen der View. Eine View nimmt notwendige Informationen vom Controller und erstellt eine Benutzeroberfläche, um diese Informationen anzuzeigen. Das ASP.NET-MVC-Framework fügt die Models, Views und Controller mit Schnittstellen zusammen, wodurch jede Komponente unabhängig von den anderen getestet werden kann.
Das Framework bietet Vorlagen für Webseiten und verschiedene Verfahren zur Authentifizierung von Benutzern an.

## Lizenzierung

Im April 2009 wurde der ASP.NET-MVC-Quellcode unter der Microsoft Public License (MS-PL) veröffentlicht. Im März 2012 kündigte Scott Guthrie in seinem Blog an, dass Microsoft einen Teil seiner Webkomponenten (einschließlich ASP.NET MVC, Razor und Web-API) unter einer Open-Source-Lizenz (Apache License 2.0) freigeben wird. Guthrie schrieb, dass „dadurch ein offeneres Entwicklungsmodell ermöglicht wird, mit dem jeder in der Gemeinschaft in der Lage sein wird, sich einzubringen und Feedback auf Code checkins, Bug-Fixes, die Entwicklung neuer Funktionen und Produkte zu erstellen und zu testen, mit den aktuellen Versionen des Quellcodes und der Tests.“ Der Quellcode befand sich zu Beginn auf Microsofts Entwickler-Website CodePlex. Er wird nun auf GitHub zur Verfügung gestellt. ASP.NET Web Forms wurden hier aus verschiedenen Gründen nicht berücksichtigt.

## Versionshistorie

ASP.NET MVC :
| Datum | Version |
| 13. März 2009 | 1.0 |
| 10. März 2010 | 2.0 |
| 13. Jan. 2011 | 3.0 |
| 15. Aug. 2012 | 4.0 |
| 17. Okt. 2013 | 5.0 |
| 17. Jan. 2014 | 5.1 |
| 10. Feb. 2014 | 5.1.1 |
| 4. Apr. 2014 | 5.1.2 |
| 22. Juni 2014 | 5.1.3 |
| 1. Juli 2014 | 5.2 |
| 28. Aug. 2014 | 5.2.2 |
| 9. Feb. 2015 | 5.2.3 |
| 12. Feb. 2018 | 5.2.4 |
| 2. Mai 2018 | 5.2.5 |
| 28. Nov. 2018 | 5.2.7 |
| 17. Mai 2016 | 6.0 (Vorabversion) |
| ASP.NET Core MVC ||
| 12. Aug. 2016 | 1.0 |
| 17. Aug. 2016 | 1.0.1 |
| 17. Nov. 2016 | 1.0.2 |
| 6. März 2017 | 1.0.3 |
| 9. Mai 2017 | 1.0.4 |
| 20. Sep. 2017 | 1.0.5 |
| 14. Nov. 2017 | 1.0.6 |
| 16. Nov. 2016 | 1.1 |
| 27. Jan. 2017 | 1.1.1 |
| 6. März 2017 | 1.1.2 |
| 9. Mai 2017 | 1.1.3 |
| 20. Sep. 2017 | 1.1.4 |
| 14. Nov. 2017 | 1.1.5 |
| 12. Dez. 2017 | 1.1.6 |
| 13. März 2018 | 1.1.7 |
| 11. Sep. 2017 | 2.0 |
| 14. Nov. 2017 | 2.0.1 |
| 9. Jan. 2018 | 2.0.2 |
| 13. März 2018 | 2.0.3 |
| 30. Mai 2018 | 2.1.0 |
| 18. Juni 2018 | 2.1.1 |
| 14. Nov. 2018 | 2.2.0 |

## View Engines

Eine View Engine ist der Programmteil innerhalb des Webservers, der aus ASP.NET-Quellcode letztlich HTML-Seiten zur Verwendung im Browser erzeugt. Die View Engines, die im ASP.NET-MVC-3- und MVC-4-Framework benutzt werden, sind die Razor View Engine und die Web Forms View Engine, die fester Bestandteil des MVC-3-Frameworks sind. Standardmäßig nutzt Razor .cshtml- oder .vbhtml-Dateien, während Web Forms .aspx-Dateien verwendet, um das Layout der Benutzeroberfläche zu erstellen. Prinzipiell können auch weitere View Engines verwendet werden.

## Partielle Ansichten

Die Verwendung von sog. Partials in Views erlaubt das dynamischere Handhaben der Anwendung. Die View wird nicht als ein Dokument aufgebaut, sondern in mehrere unterteilt, die wiederum in einem vereinigt werden. Zum Beispiel wird auf einer Seite eine Liste mit Sortieroption als Partial eingebaut. Zusätzlich gibt es Formulare oder ähnliches, die durch die Listensortierung nicht beeinflusst werden dürfen. Mit Hilfe von Ajax-Aufrufen kann über den Controller nun lediglich die partiell eingebundene Liste aktualisiert und neu geladen werden, ohne die gesamte Seite zu aktualisieren.
Zudem bieten Partials eine hohe Wiederverwendbarkeit von Seitenelementen, da diese flexibel in mehreren Hauptviews eingesetzt werden können.