Freigeben über


ASP.NET MVC 3

(enthält das Tools-Update vom April 2011)

ASP.NET MVC 3 ist ein Framework zum Erstellen skalierbarer, standardbasierter Webanwendungen unter Verwendung von bewährten Entwurfsmustern und der Leistungsfähigkeit ASP.NET und der .NET Framework.

Es wird parallel mit ASP.NET MVC 2 installiert. Beginnen Sie also noch heute mit der Verwendung!

Laden Sie das Installationsprogramm hier herunter.

Top Features

  • Integriertes Gerüstbausystem erweiterbar über NuGet
  • HTML 5-fähige Projektvorlagen
  • Expressive Ansichten einschließlich der neuen Razor View Engine
  • Leistungsstarke Hooks mit Abhängigkeitsinjektion und globalen Aktionsfiltern
  • Umfassende JavaScript-Unterstützung mit unauffälligem JavaScript, jQuery Validation und JSON-Bindung
  • Lesen Sie die vollständige Funktionsliste unten.

Neuigkeiten in ASP.NET MVC 3

Installation und Hilfe

ASP.NET MVC 3 Overview

ASP.NET MVC 3 baut auf ASP.NET MVC 1 und 2 auf und fügt großartige Features hinzu, die ihren Code vereinfachen und eine tiefere Erweiterbarkeit ermöglichen. Dieses Thema bietet eine Übersicht über viele der neuen Features, die in dieser Version enthalten sind und in den folgenden Abschnitten organisiert sind:

Erweiterbares Gerüstbau mit MvcScaffold-Integration

Das neue Gerüstbausystem erleichtert die Aufnahme und produktive Nutzung, wenn Sie mit dem Framework völlig neu sind, und die Automatisierung gängiger Entwicklungsaufgaben, wenn Sie erfahren sind und bereits wissen, was Sie tun.

Dies wird vom neuen NuGet-Gerüstbaupaketnamens MvcScaffolding unterstützt. Der Begriff "Gerüstbau" wird von vielen Softwaretechnologien verwendet, um "schnell eine grundlegende Gliederung Ihrer Software zu generieren, die Sie dann bearbeiten und anpassen können". Das Gerüstpaket, das wir für ASP.NET MVC erstellen, ist in mehreren Szenarien von großem Nutzen:

  • Wenn Sie zum ersten Mal ASP.NET MVC lernen, da es Ihnen eine schnelle Möglichkeit bietet, nützlichen, funktionierenden Code zu erhalten, den Sie dann nach Ihren Anforderungen bearbeiten und anpassen können. Es erspart Ihnen das Trauma, auf eine leere Seite zu schauen und keine Ahnung zu haben, wo Sie anfangen sollen!
  • Wenn Sie ASP.NET MVC gut kennen und jetzt eine neue Add-On-Technologie wie einen objektrelationalen Mapper, eine Ansichts-Engine, eine Testbibliothek usw. erkunden, da der Ersteller dieser Technologie möglicherweise auch ein Gerüstpaket dafür erstellt hat.
  • Wenn Ihre Arbeit das wiederholte Erstellen ähnlicher Klassen oder Dateien umfasst, da Sie benutzerdefinierte Gerüste erstellen können, die Testvorrichtungen, Bereitstellungsskripts oder was sie sonst noch benötigen, ausgeben. Jeder in Ihrem Team kann auch Ihre benutzerdefinierten Gerüste verwenden.

Weitere Features in MvcScaffolding:

  • Unterstützung für C#- und VB-Projekte
  • Unterstützung für die Razor- und ASPX-Ansichts-Engines
  • Unterstützt das Gerüstbau in ASP.NET MVC-Bereichen und die Verwendung benutzerdefinierter Ansichtslayouts/Master
  • Sie können die Ausgabe einfach anpassen, indem Sie T4-Vorlagen bearbeiten.
  • Sie können völlig neue Gerüste mit benutzerdefinierter PowerShell-Logik und benutzerdefinierten T4-Vorlagen hinzufügen. Diese (und alle von Ihnen angegebenen benutzerdefinierten Parameter) werden automatisch in der Vervollständigungsliste der Konsolenregisterkarte angezeigt.
  • Sie können NuGet-Pakete mit zusätzlichen Gerüsten für verschiedene Technologien (z. B. einen Proof-of-Concept für LINQ to SQL jetzt) abrufen und diese kombinieren und miteinander kombinieren.

Das ASP.NET MVC 3 Tools Update enthält großartige Visual Studio-Unterstützung für dieses Gerüstbausystem, z. B.:

  • Controller-Dialogfeld hinzufügen unterstützt jetzt das vollständige automatische Gerüstbau von Controlleraktionen zum Erstellen, Lesen, Aktualisieren und Löschen von Controlleraktionen und entsprechenden Ansichten. Standardmäßig gerüstet dieser Datenzugriffscode mithilfe von EF Code First.
  • Controllerdialogfeld hinzufügen unterstützt erweiterbare Gerüste über NuGet-Pakete wie MvcScaffolding. Dies ermöglicht das Einbinden benutzerdefinierter Gerüste in den Dialog, sodass Sie Gerüste für andere Datenzugriffstechnologien wie NHibernate oder sogar JET mit ODBCDirect erstellen können, wenn Sie so geneigt sind!

Weitere Informationen zum Gerüstbau in ASP.NET MVC 3 finden Sie in den folgenden Ressourcen:

HTML 5-Projektvorlagen

Das Dialogfeld Neues Projekt enthält ein Kontrollkästchen HTML 5-Versionen von Projektvorlagen aktivieren. Diese Vorlagen nutzen Modernizr 1.7, um Kompatibilitätsunterstützung für HTML 5 und CSS 3 in untergeordneten Browsern bereitzustellen.

The Razor View Engine

ASP.NET MVC 3 verfügt über eine neue Ansichts-Engine namens Razor, die die folgenden Vorteile bietet:

  • Razor-Syntax ist sauber und prägnant und erfordert eine minimale Anzahl von Tastenanschlägen.
  • Razor ist einfach zu erlernen, auch weil es auf vorhandenen Sprachen wie C# und Visual Basic basiert.
  • Visual Studio enthält IntelliSense und Codefarbisierung für Razor-Syntax.
  • Razor-Ansichten können komponententests durchgeführt werden, ohne dass Sie die Anwendung ausführen oder einen Webserver starten müssen.

Einige neue Razor-Features umfassen folgendes:

  • @model Syntax zum Angeben des Typs, der an die Ansicht übergeben wird.
  • @* *@ Kommentarsyntax.
  • Die Möglichkeit, Standardwerte (z layoutpage. B. ) einmal für einen gesamten Standort anzugeben.
  • Die Html.Raw Methode zum Anzeigen von Text ohne HTML-Codierung.
  • Unterstützung für das Freigeben von Code zwischen mehreren Ansichten (_viewstart.cshtml - oder _viewstart.vbhtml-Dateien ).

Razor enthält auch neue HTML-Hilfsprogramme, z. B. die folgenden:

  • Chart. Rendert ein Diagramm und bietet die gleichen Features wie das Diagrammsteuerelement in ASP.NET 4.
  • WebGrid. Rendert ein Datenraster mit Paging- und Sortierfunktionen.
  • Crypto. Verwendet Hashalgorithmen, um ordnungsgemäß gesalzene und gehashte Kennwörter zu erstellen.
  • WebImage. Rendert ein Bild.
  • WebMail. Sendet eine E-Mail.

Weitere Informationen zu Razor finden Sie in den folgenden Ressourcen:

Unterstützung für Mehrere Ansichts-Engines

Im Dialogfeld Ansicht hinzufügen in ASP.NET MVC 3 können Sie die Ansichts-Engine auswählen, mit der Sie arbeiten möchten, und im Dialogfeld Neues Projekt können Sie die Standardansichts-Engine für ein Projekt angeben. Sie können die Web Forms View Engine (ASPX), Razor oder eine Open-Source-Ansichts-Engine wie Spark, NHaml oder NDjango auswählen.

Controllerverbesserungen

Globale Aktionsfilter

Manchmal möchten Sie logik entweder vor der Ausführung einer Aktionsmethode oder nach der Ausführung einer Aktionsmethode ausführen. Um dies zu unterstützen, ASP.NET von MVC 2 bereitgestellten Aktionsfilter. Aktionsfilter sind benutzerdefinierte Attribute, die ein deklaratives Mittel zum Hinzufügen von Präaktions- und Post-Action-Verhalten zu bestimmten Controlleraktionsmethoden bereitstellen. In einigen Fällen können Sie jedoch das Verhalten vor oder nach der Aktion angeben, das für alle Aktionsmethoden gilt. Mit MVC 3 können Sie globale Filter angeben, indem Sie sie der GlobalFilters Sammlung hinzufügen. Weitere Informationen zu globalen Aktionsfiltern finden Sie in den folgenden Ressourcen:

Neue "ViewBag"-Eigenschaft

MVC 2-Controller unterstützen eine ViewData Eigenschaft, die es Ihnen ermöglicht, Daten mithilfe einer Api für ein spät gebundenes Wörterbuch an eine Ansichtsvorlage zu übergeben. In MVC 3 können Sie auch eine etwas einfachere Syntax mit der ViewBag -Eigenschaft verwenden, um denselben Zweck zu erreichen. Anstatt beispielsweise zu schreiben ViewData["Message"]="text", können Sie schreiben ViewBag.Message="text". Sie müssen keine stark typisierten Klassen definieren, um die ViewBag -Eigenschaft zu verwenden. Da es sich um eine dynamische Eigenschaft handelt, können Sie stattdessen eigenschaften einfach abrufen oder festlegen, und sie werden zur Laufzeit dynamisch aufgelöst. ViewBag Intern werden Eigenschaften als Name-Wert-Paare im ViewData Wörterbuch gespeichert. (Hinweis: In den meisten Vorabversionen von MVC 3 wurde die ViewBag Eigenschaft als ViewModel Eigenschaft bezeichnet.)

Neue ActionResult-Typen

Die folgenden ActionResult Typen und die entsprechenden Hilfsmethoden sind in MVC 3 neu oder erweitert:

  • HttpNotFoundResult. Gibt einen 404 HTTP-status Code an den Client zurück.
  • RedirectResult. Gibt abhängig von einem booleschen Parameter eine temporäre Umleitung (HTTP 302 status Code) oder eine permanente Umleitung (HTTP 301 status Code) zurück. In Verbindung mit dieser Änderung verfügt die Controller-Klasse jetzt über drei Methoden zum Ausführen permanenter Umleitungen: RedirectPermanent, RedirectToRoutePermanentund RedirectToActionPermanent. Diese Methoden geben eine instance von RedirectResult zurück, wobei die Permanent -Eigenschaft auf truefestgelegt ist.
  • HttpStatusCodeResult. Gibt einen vom Benutzer angegebenen HTTP-status-Code zurück.

JavaScript- und AJAX-Verbesserungen

Standardmäßig verwenden Ajax- und Validierungshilfsprogramme in MVC 3 einen unaufdringlichen JavaScript-Ansatz. Unauffälliges JavaScript verhindert das Einfügen von Inline-JavaScript in HTML. Dies macht Ihren HTML-Code kleiner und übersichtlicher und erleichtert das Austauschen oder Anpassen von JavaScript-Bibliotheken. Validierungshilfsprogramme in MVC 3 verwenden standardmäßig auch das jQueryValidate Plug-In. Wenn Sie MVC 2 verhalten möchten, können Sie unauffälliges JavaScript mithilfe einer web.config Dateieinstellung deaktivieren. Weitere Informationen zu JavaScript- und Ajax-Verbesserungen finden Sie in den folgenden Ressourcen:

standardmäßig aktivierte Client-Side-Validierung

In früheren Versionen von MVC müssen Sie die Html.EnableClientValidation -Methode explizit aus einer Sicht aufrufen, um die clientseitige Validierung zu aktivieren. In MVC 3 ist dies nicht mehr erforderlich, da die clientseitige Validierung standardmäßig aktiviert ist. (Sie können dies mithilfe einer Einstellung in der dateiweb.config deaktivieren.)

Damit die clientseitige Validierung funktioniert, müssen Sie weiterhin auf die entsprechenden jQuery- und jQuery-Validierungsbibliotheken an Ihrer Website verweisen. Sie können diese Bibliotheken auf Ihrem eigenen Server hosten oder über ein Content Delivery Network (CDN) wie die CDNs von Microsoft oder Google darauf verweisen.

Remote Validator

ASP.NET MVC 3 unterstützt die neue RemoteAttribute-Klasse , mit der Sie die Remotevalidierungsunterstützung des jQuery Validation-Plug-Ins nutzen können. Dadurch kann die clientseitige Validierungsbibliothek automatisch eine benutzerdefinierte Methode aufrufen, die Sie auf dem Server definieren, um Validierungslogik auszuführen, die nur serverseitig ausgeführt werden kann.

Im folgenden Beispiel gibt das Attribut an, dass die Remote Clientvalidierung eine Aktion namens UserNameAvailable für die UsersController -Klasse aufruft, um das UserName Feld zu überprüfen.

public class User 
{
    [Remote("UserNameAvailable", "Users")]
    public string UserName { get; set; }
}

Das folgende Beispiel zeigt den entsprechenden Controller.

public class UsersController 
{ 
    public bool UserNameAvailable(string username) 
    { 
        if(MyRepository.UserNameExists(username)) 
        { 
            return "false"; 
        } 
        return "true"; 
    } 
}

Weitere Informationen zur Verwendung des Attributs finden Sie unter Vorgehensweise: Implementieren derRemote Remoteüberprüfung in ASP.NET MVC in der MSDN Library.

Json-Bindungsunterstützung

ASP.NET MVC 3 enthält integrierte JSON-Bindungsunterstützung, die es Aktionsmethoden ermöglicht, JSON-codierte Daten zu empfangen und an Aktionsmethodenparameter zu binden. Diese Funktion ist in Szenarien mit Clientvorlagen und Datenbindung nützlich. (Mithilfe von Clientvorlagen können Sie ein einzelnes Datenelement oder eine Gruppe von Datenelementen mithilfe von Vorlagen formatieren und anzeigen, die auf dem Client ausgeführt werden.) Mit MVC 3 können Sie auf einfache Weise Clientvorlagen mit Aktionsmethoden auf dem Server verbinden, die JSON-Daten senden und empfangen. Weitere Informationen zur Unterstützung der JSON-Bindung finden Sie im Abschnitt JavaScript- und AJAX-Verbesserungen im Blogbeitrag MVC 3 Preview von Scott Guthrie.

Verbesserungen bei der Modellvalidierung

Metadatenattribute "DataAnnotations"

ASP.NET MVC 3 unterstützt DataAnnotations Metadatenattribute wie DisplayAttribute.

"ValidationAttribute"-Klasse

Die ValidationAttribute -Klasse wurde im .NET Framework 4 verbessert, um eine neue IsValid Überladung zu unterstützen, die weitere Informationen zum aktuellen Validierungskontext bereitstellt, z. B. das zu überprüfende Objekt. Dies ermöglicht umfassendere Szenarien, in denen Sie den aktuellen Wert basierend auf einer anderen Eigenschaft des Modells überprüfen können. Mit dem neuen CompareAttribute Attribut können Sie beispielsweise die Werte von zwei Eigenschaften eines Modells vergleichen. Im folgenden Beispiel muss die ComparePassword Eigenschaft mit dem Password Feld übereinstimmen, um gültig zu sein.

public class User
{ 
    [Required]
    public string Password { get; set; } 
    [Required, Compare("Password")] 
    public string ComparePassword { get; set; } 
}

Validierungsschnittstellen

Mit der IValidatableObject-Schnittstelle können Sie eine Validierung auf Modellebene durchführen, und Sie können Validierungsfehlermeldungen bereitstellen, die für den Zustand des Gesamtmodells oder zwischen zwei Eigenschaften innerhalb des Modells spezifisch sind. MVC 3 ruft jetzt Fehler von der Schnittstelle bei der IValidatableObject Modellbindung ab und kennzeichnet oder hebt betroffene Felder in einer Ansicht mithilfe der integrierten HTML-Formularhilfsprogramme automatisch hervor.

Die IClientValidatable-Schnittstelle ermöglicht es ASP.NET MVC, zur Laufzeit zu ermitteln, ob ein Validierungssteuerelement über Unterstützung für die Clientvalidierung verfügt. Diese Schnittstelle wurde so konzipiert, dass sie in eine Vielzahl von Validierungsframeworks integriert werden kann.

Weitere Informationen zu Validierungsschnittstellen finden Sie im Abschnitt Verbesserungen der Modellvalidierung im Blogbeitrag MVC 3 Preview von Scott Guthrie. (Beachten Sie jedoch, dass der Verweis auf "IValidateObject" im Blog "IValidatableObject" lauten sollte.)

Verbesserungen der Abhängigkeitsinjektion

ASP.NET MVC 3 bietet eine bessere Unterstützung für die Anwendung von Abhängigkeitsinjektion (Dependency Injection, DI) und die Integration in Abhängigkeitsinjektion oder Inversion of Control-Containern (IOC). Unterstützung für DI wurde in den folgenden Bereichen hinzugefügt:

  • Controller (Registrieren und Injizieren von Controllerfabriken, Injizieren von Controllern).
  • Ansichten (Registrieren und Einfügen von Ansichts-Engines, Einfügen von Abhängigkeiten in Ansichtsseiten).
  • Aktionsfilter (Suchen und Einfügen von Filtern).
  • Modellbinder (Registrieren und Einfügen).
  • Modellvalidierungsanbieter (Registrieren und Einfügen).
  • Modellmetadatenanbieter (Registrieren und Einfügen).
  • Wertanbieter (Registrieren und Einfügen).

MVC 3 unterstützt die Common Service Locator-Bibliothek und jeden DI-Container, der die Schnittstelle dieser IServiceLocator Bibliothek unterstützt. Außerdem wird eine neue IDependencyResolver Schnittstelle unterstützt, die die Integration von DI-Frameworks erleichtert.

Weitere Informationen zu DI in MVC 3 finden Sie in den folgenden Ressourcen:

Weitere neue Features

NuGet-Integration

ASP.NET MVC 3 wird NuGet automatisch installiert und aktiviert. NuGet ist ein kostenloser Open-Source-Paket-Manager, der das Suchen, Installieren und Verwenden von .NET-Bibliotheken und -Tools in Ihren Projekten erleichtert. Es funktioniert mit allen Visual Studio-Projekttypen (einschließlich ASP.NET Web Forms und ASP.NET MVC).

NuGet ermöglicht Entwicklern, die Open Source Projekte verwalten (z. B. Projekte wie Moq, NHibernate, Ninject, StructureMap, NUnit, Windsor, RhinoMocks und Elmah), ihre Bibliotheken zu packen und in einem Onlinekatalog zu registrieren. Für .NET-Entwickler, die eine dieser Bibliotheken verwenden möchten, ist es dann einfach, das Paket zu finden und in Projekten zu installieren, an denen sie arbeiten.

Mit dem ASP.NET 3 Tools Update enthalten Projektvorlagen vorinstallierte NuGet-Pakete für JavaScript-Bibliotheken, sodass sie über NuGet aktualisierbar sind. Entity Framework Code First ist auch als NuGet-Paket vorinstalliert.

Weitere Informationen zu NuGet finden Sie in der NuGet-Dokumentation.

Partial-Page Ausgabezwischenspeicherung

ASP.NET MVC unterstützt das Zwischenspeichern von Ganzseitenantworten seit Version 1. MVC 3 unterstützt auch das Teilweise-Seitenausgabezwischenspeichern, sodass Sie Regionen oder Fragmente einer Antwort problemlos zwischenspeichern können. Weitere Informationen zum Zwischenspeichern finden Sie im Abschnitt Teilweises Seitenausgabezwischenspeichern des Blogbeitrags von Scott Guthrie zum MVC 3-Release Candidate und im Abschnitt Zwischenspeichern der Ausgabe von untergeordneten Aktionen in den Versionshinweisen zu MVC 3.

Präzise Steuerung der Anforderungsvalidierung

ASP.NET MVC verfügt über eine integrierte Anforderungsüberprüfung, die automatisch zum Schutz vor XSS- und HTML-Einschleusungsangriffen beiträgt. Manchmal möchten Sie die Anforderungsüberprüfung jedoch explizit deaktivieren, z. B. wenn Sie Benutzern das Posten von HTML-Inhalten ermöglichen möchten (z. B. in Blogeinträgen oder CMS-Inhalten). Sie können jetzt Modellen oder Ansichtsmodellen ein AllowHtml-Attribut hinzufügen, um die Anforderungsvalidierung pro Eigenschaft während der Modellbindung zu deaktivieren. Weitere Informationen zur Anforderungsüberprüfung finden Sie in den folgenden Ressourcen:

Erweiterbares Dialogfeld "Neues Projekt"

In ASP.NET MVC 3 können Sie dem Dialogfeld Neues Projekt Projektvorlagen, Anzeigen von Engines und Komponententestprojektframeworks hinzufügen.

Verbesserungen beim Vorlagengerüst

ASP.NET MVC 3-Gerüstvorlagen können Primärschlüsseleigenschaften in Modellen besser identifizieren und angemessen behandeln als in früheren Versionen von MVC. (Beispielsweise stellen die Gerüstbauvorlagen jetzt sicher, dass der Primärschlüssel nicht als bearbeitbares Formularfeld gerüstet ist.)

Standardmäßig verwenden die Gerüste Erstellen und Bearbeiten jetzt das Html.EditorFor Hilfsprogramm anstelle des Html.TextBoxFor Hilfsprogramm. Dadurch wird die Unterstützung für Metadaten im Modell in Form von Datenanmerkungsattributen verbessert, wenn das Dialogfeld Ansicht hinzufügen eine Ansicht generiert.

Neue Überladungen für "Html.LabelFor" und "Html.LabelForModel"

Für die LabelFor Hilfsmethoden und LabelForModel wurden neue Methodenüberladungen hinzugefügt. Mit den neuen Überladungen können Sie den Bezeichnungstext angeben oder überschreiben.

Unterstützung für sitzungslose Controller

In ASP.NET MVC 3 können Sie angeben, ob eine Controllerklasse den Sitzungszustand verwenden soll und wenn ja, ob der Sitzungszustand schreibgeschützt oder schreibgeschützt sein soll. Weitere Informationen zur Unterstützung sitzungsloser Controller finden Sie unter Versionshinweise zu MVC 3.

Neue "AdditionalMetadataAttribute"-Klasse

Sie können das AdditionalMetadata-Attribut verwenden, um das ModelMetadata.AdditionalValues Wörterbuch für eine Modelleigenschaft aufzufüllen. Wenn ein Ansichtsmodell beispielsweise über eine Eigenschaft verfügt, die nur für einen Administrator angezeigt werden soll, können Sie diese Eigenschaft wie im folgenden Beispiel mit Anmerkungen versehen:

public class ProductViewModel 
{
    [AdditionalMetadata("AdminOnly", true)]
    public string RefundCode {get; set;}
}

Diese Metadaten werden jeder Anzeige- oder Editorvorlage zur Verfügung gestellt, wenn ein Produktansichtsmodell gerendert wird. Es liegt an Ihnen, die Metadateninformationen zu interpretieren.

AccountController-Verbesserungen

Die Projektvorlage AccountController im Internet wurde erheblich verbessert.

Neue Intranetprojektvorlage

Eine neue Intranetprojektvorlage ist enthalten, die die Windows-Authentifizierung aktiviert und den AccountController entfernt.