ASP.NET MVC 3 – Versionshinweise

Übersicht

In diesem Dokument wird die Version von ASP.NET MVC 3 RTM für Visual Studio 2010 beschrieben. ASP.NET MVC ist ein Framework für die Entwicklung von Webanwendungen, die das MVC-Muster (Model-View-Controller) verwenden. Das ASP.NET MVC 3-Installationsprogramm umfasst die folgenden Komponenten:

  • ASP.NET MVC 3-Laufzeitkomponenten
  • ASP.NET MVC 3 Visual Studio 2010-Tools
  • ASP.NET Webseiten-Laufzeitkomponenten
  • ASP.NET Webseiten Visual Studio 2010-Tools
  • Microsoft Paket-Manager für .NET (NuGet)
  • Ein Update für Visual Studio 2010, das die Unterstützung für razor-Syntax ermöglicht. (Ausführliche Informationen finden Sie im KnowledgeBase-Artikel 2483190.)

Die vollständigen Versionshinweise für jede Vorabversion von ASP.NET MVC 3 finden Sie auf der website ASP.NET unter der folgenden URL:

https://www.asp.net/learn/whitepapers/mvc3-release-notes

Installation Notes (SAP-Supporthinweis 1984787 – SUSE Linux Enterprise Server 12: Installationshinweise)

Um ASP.NET MVC 3 RTM mit dem Web Platform Installer (Web PI) zu installieren, besuchen Sie die folgende Seite:

https://www.microsoft.com/web/gallery/install.aspx?appid=MVC3

Alternativ können Sie das Installationsprogramm für ASP.NET MVC 3 RTM für Visual Studio 2010 auf der folgenden Seite herunterladen:

https://go.microsoft.com/fwlink/?LinkID=208140

ASP.NET MVC 3 kann installiert und parallel mit ASP.NET MVC 2 ausgeführt werden.

Softwareanforderungen

Für die ASP.NET MVC 3-Laufzeitkomponenten ist die folgende Software erforderlich:

  • .NET Framework, Version 4.

    ASP.NET MVC 3 Visual Studio 2010-Tools erfordern die folgende Software:

  • Visual Studio 2010 oder Visual Web Developer 2010 Express.

Dokumentation

Dokumentation für ASP.NET MVC ist auf der MSDN-Website unter der folgenden URL verfügbar:

https://go.microsoft.com/fwlink/?LinkId=205717

Lernprogramme und weitere Informationen zu ASP.NET MVC sind auf der MVC-Seite der ASP.NET-Website unter der folgenden URL verfügbar:

https://www.asp.net/mvc/

Unterstützung

Dies ist eine vollständig unterstützte Version. Informationen zum Technischen Support finden Sie auf der website Microsoft-Support.

Sie können auch Fragen zu dieser Version im ASP.NET MVC-Forum veröffentlichen, in dem Mitglieder der ASP.NET Community häufig informelle Unterstützung bieten können:

https://forums.asp.net/1146.aspx

Aktualisieren eines ASP.NET MVC 2-Projekts auf ASP.NET MVC 3 Tools Update

ASP.NET MVC 3 kann parallel mit ASP.NET MVC 2 auf demselben Computer installiert werden, wodurch Sie flexibel entscheiden können, wann eine ASP.NET MVC 2-Anwendung auf ASP.NET MVC 3 aktualisiert werden soll.

Gehen Sie wie folgt vor, um eine vorhandene ASP.NET MVC 2-Anwendung manuell auf Version 3 zu aktualisieren:

  1. Erstellen Sie ein neues leeres ASP.NET MVC 3-Projekt auf Ihrem Computer. Dieses Projekt enthält einige Dateien, die für das Upgrade erforderlich sind.

  2. Kopieren Sie die folgenden Dateien aus dem ASP.NET MVC 3-Projekt an den entsprechenden Speicherort Ihres ASP.NET MVC 2-Projekts. Sie müssen alle Verweise auf die jQuery-Bibliothek aktualisieren, um den neuen Dateinamen ( jQuery-1.5.1.js) zu berücksichtigen:

    • /Views/Web.config
    • /packages.config
    • /scripts/*.js
    • /Content/themes/*.*
  3. Kopieren Sie den Ordner "Pakete" im Stamm der leeren ASP.NET MVC 3-Projektmappe in den Stamm ihrer Lösung, der sich im Verzeichnis befindet, in dem sich die .sln Datei der Lösung befindet.

  4. Wenn Ihr ASP.NET MVC 2-Projekt Bereiche enthält, kopieren Sie die Datei "/Views/Web.config" in den Ordner "Views" jedes Bereichs.

  5. Suchen Sie in beiden Web.config-Dateien im ASP.NET MVC 2-Projekt global und ersetzen Sie die ASP.NET MVC-Version. Suchen Sie nach Folgendem:

    System.Web.Mvc, Version=2.0.0.0
    

    Ersetzen Sie ihn durch Folgendes:

    System.Web.Mvc, Version=3.0.0.0
    
  6. Löschen Sie in Projektmappen-Explorer den Verweis auf System.Web.Mvc (der auf die DLL von Version 2 verweist), und fügen Sie dann einen Verweis auf System.Web.Mvc (v3.0.0.0.0) hinzu.

  7. Fügen Sie einen Verweis auf System.Web.WebPages.dll und System.Web.Helpers.dll hinzu. Diese Assemblys befinden sich in den folgenden Ordnern:

    • %ProgramFiles%\ Microsoft ASP.NET\ASP.NET MVC 3\Assemblies
    • %ProgramFiles%\ Microsoft ASP.NET\ASP.NET-Webseiten\v1.0\Assemblies
  8. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen, und wählen Sie "Projekt entladen" aus. Klicken Sie dann erneut mit der rechten Maustaste auf den Projektnamen, und wählen Sie "ProjectName.csproj bearbeiten" aus.

  9. Suchen Sie das ProjectTypeGuids-Element , und ersetzen Sie {F85E285D-A4E0-4152-9332-AB1D724D3325} durch {E53F8FEA-EAE0-44A6-8774-FFD645390401}.

  10. Speichern Sie die Änderungen, klicken Sie mit der rechten Maustaste auf das Projekt, und wählen Sie dann "Projekt erneut laden" aus.

  11. Fügen Sie in der Stammdatei "Web.config" der Anwendung die folgenden Einstellungen zum Abschnitt "Assemblys " hinzu.

    <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, 
         PublicKeyToken=31BF3856AD364E35" />
    
    <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral,
         PublicKeyToken=31BF3856AD364E35" />
    
  12. Wenn das Projekt auf Bibliotheken von Drittanbietern verweist, die mit ASP.NET MVC 2 kompiliert werden, fügen Sie das folgende hervorgehobene bindingRedirect-Element zur Datei "Web.config" im Anwendungsstamm unter dem Konfigurationsabschnitt hinzu:

    <runtime>
       <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
           <assemblyIdentity name="System.Web.Mvc"
               publicKeyToken="31bf3856ad364e35"/>
           <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0"/>
         </dependentAssembly>
       </assemblyBinding>
    </runtime>
    

Änderungen an ASP.NET MVC 3 Tools Update

In diesem Abschnitt werden Änderungen beschrieben, die seit der ASP.NET MVC 3 RTM-Version am ASP.NET MVC 3 Tools Update vorgenommen wurden.

Das Dialogfeld "Controller hinzufügen" kann jetzt Gerüstcontroller mit Ansichten und Datenzugriffscode erstellen.

Das Gerüst ist eine Möglichkeit, schnell einen Controller und Ansichten für Ihre Anwendung zu generieren. Nachdem der Code generiert wurde, können Sie ihn bearbeiten, um die Anforderungen Ihres Projekts zu erfüllen.

Klicken Sie zum Starten des Dialogfelds "Controller hinzufügen" in ASP.NET MVC 3 mit der rechten Maustaste auf den Ordner "Controller" in Projektmappen-Explorer, klicken Sie auf "Hinzufügen" und dann auf "Controller". Das Dialogfeld wurde erweitert, um zusätzliche Gerüstoptionen anzubieten.

Screenshot des Dialogfelds

Standardmäßig sind drei Gerüstvorlagen verfügbar.

Leerer Controller

Diese Vorlage generiert eine leere Controllerdatei. Diese Vorlage entspricht nicht der Überprüfung von Hinzufügen von Aktionen zum Erstellen, Bearbeiten, Details, Löschen von Szenarien in früheren Versionen von ASP.NET MVC. Wenn Sie dies auswählen, stehen keine weiteren Optionen zur Verfügung.

Controller mit leeren Lese-/Schreibaktionen

Diese Vorlage generiert eine Controllerdatei mit allen erforderlichen Aktionsmethoden, aber keine Implementierungscode in den Methoden. Diese Vorlage entspricht dem Überprüfen von Hinzufügen von Aktionen zum Erstellen, Bearbeiten, Details, Löschen von Szenarien in früheren Versionen von ASP.NET MVC. Wenn Sie dies auswählen, stehen keine weiteren Optionen zur Verfügung.

Controller mit Lese-/Schreibzugriffsaktionen und -ansichten mithilfe von Entity Framework

Mit dieser Vorlage können Sie schnell eine funktionierende Dateneingabe-Benutzeroberfläche erstellen. Es generiert Code, der eine Reihe allgemeiner Anforderungen und Szenarien behandelt, z. B. die folgenden:

  • Datenzugriff. Der generierte Code liest und schreibt Entitäten in einer Datenbank. Es funktioniert mit dem Entity Framework Code First-Ansatz, wenn Sie eine vorhandene Datenkontextklasse auswählen oder die Vorlage eine neue DbContext-Klasse generieren lassen. Sie funktioniert auch mit dem Ansatz "Entity Framework Database First" oder "Model First", wenn Sie eine vorhandene ObjectContext-Klasse auswählen.

  • Validierung. Der generierte Code verwendet ASP.NET MVC-Modellbindungs- und Metadatenfeatures, sodass Formularübermittlungen gemäß regeln überprüft werden, die für Ihre Modellklasse deklariert sind. Dazu gehören integrierte Gültigkeitsprüfungsregeln, z. B. die Attribute "Required" und "StringLength" und benutzerdefinierte Gültigkeitsprüfungsregeln.

  • 1: n-Beziehungen Wenn Sie 1:n-Fremdschlüsselbeziehungen zwischen Ihren Modellklassen definieren, erzeugt der generierte Code Dropdownlisten für die Auswahl verwandter Entitäten. Sie können beispielsweise die folgenden Modellklassen definieren, die den ersten Konventionen von Entity Framework-Code folgen:

    public class Product
    {
         public int ProductId { get; set; }
         [Required]
         public string Name { get; set; }
    
         // Product belongs to Category
         public int CategoryId { get; set; }
         public virtual Category Category { get; set; }
    }
    public class Category
    {
         public int CategoryId { get; set; }
         [Required]
         public string Name { get; set; }
    }
    

    Wenn Sie dann ein Gerüst für einen Controller für die Product-Klasse erstellen, können Benutzer ein Category-Objekt für jede Produktinstanz auswählen.

    Diese Vorlage ermöglicht zusätzliche Optionen im Dialogfeld "Controller hinzufügen". Für die Modellklasse können Sie eine beliebige Modellklasse in Ihrer Lösung auswählen, die den Typ der Daten bestimmt, die Benutzer erstellen oder bearbeiten können:

  • Wenn Sie Entity Framework Code First verwenden möchten, können Sie eine beliebige Modellklasse auswählen.

  • Wenn Sie "Entity Framework Database First" oder "Entity Framework Model First" verwenden, müssen Sie eine Entitätsklasse auswählen, die in Ihrem konzeptionellen Modell definiert ist.

Für die Datenkontextklasse können Sie diese Auswahl treffen:

  • Wenn Sie Code First verwenden möchten und keine Datenkontextklasse vorhanden sind, wählen Sie **Neuer Datenkontext **. Anschließend wird eine Datenkontextklasse für Sie generiert.
  • Wenn Sie Code First verwenden möchten und über eine vorhandene Datenkontextklasse verfügen möchten, wählen Sie sie hier aus. Sie wird aktualisiert, um die ausgewählte Modellklasse beizubehalten.
  • Wenn Sie "Database First" oder "Model First" verwenden, wählen Sie hier die Objektkontextklasse aus.

Wählen Sie für Ansichten das zu verwendende Ansichtsmodul aus, oder wählen Sie "Keine" aus, wenn Sie keine Ansichten erstellen möchten.

Sie können "Erweiterte Optionen" auswählen, um weitere Optionen für die generierten Ansichten anzugeben. Sie können z. B. das zu verwendende Layout oder die Gestaltungsvorlage auswählen.

Verbesserungen am Dialogfeld "ASP.NET MVC 3 Neues Projekt"

Das Dialogfeld, das Sie zum Erstellen neuer ASP.NET MVC 3-Projekte verwenden, umfasst mehrere Verbesserungen, wie unten aufgeführt.

Screenshot des Dialogfelds

Neue Vorlage "Intranetprojekt"

Die Projektvorlagenliste enthält eine neue Intranetanwendungsvorlage. Diese Vorlage enthält Einstellungen zum Erstellen einer Webanwendung mithilfe von Windows-Authentifizierung anstelle der Formularauthentifizierung. Da eine Intranetanwendung einige IIS-Einstellungen erfordert, die nicht in einer Projektvorlage gekapselt werden können, enthält die Vorlage eine Infodatei mit Anweisungen zum Arbeiten der Projektvorlage in IIS. Dokumentation für die neue Intranetanwendungsvorlage ist auf der MSDN-Website unter der folgenden URL verfügbar:

https://msdn.microsoft.com/library/gg703322(VS.98).aspx

Projektvorlagen sind jetzt HTML5 aktiviert

Das Dialogfeld "Neues Projekt" enthält nun eine Option zum Hinzufügen von HTML5-spezifischen Features zu den Projektvorlagen. Wenn Sie die Option auswählen, werden Ansichten generiert, die den neuen HTML5-Code <header><footer>und <navigation> die neuen Elemente enthalten.

Beachten Sie, dass frühere Browserversionen HTML5-spezifische Tags nicht unterstützen. Um diese Einschränkung zu beheben, enthalten die HTML5-Projektvorlagen einen Verweis auf die Modernizr-Bibliothek. (Siehe nächster Abschnitt.)

Projektvorlagen enthalten jetzt Modernizr 1.7

Modernizr ist eine JavaScript-Bibliothek, die unterstützung für CSS 3 und HTML5 in Browsern ermöglicht, die diese Features noch nicht unterstützen. Diese Bibliothek ist als vorinstalliertes NuGet-Paket in Vorlagen für ASP.NET MVC 3-Projekte enthalten. Weitere Informationen zu Modernizr finden Sie unter http://www.modernizr.com/.

Projektvorlagen umfassen aktualisierte Versionen von jQuery, jQuery UI und jQuery Validation

Die Projektvorlagen enthalten jetzt die folgenden Versionen der jQuery-Skripts:

  • jQuery 1.5.1
  • jQuery Validation 1.8
  • jQuery UI 1.8.11

Diese Bibliotheken sind als vorinstallierte NuGet-Pakete enthalten.

Projektvorlagen enthalten jetzt ADO.NET Entity Framework 4.1 als vorinstalliertes NuGet-Paket

Das ADO.NET Entity Framework 4.1 enthält das Feature "Code First". Code First ist ein neues Entwicklungsmuster für das ADO.NET Entity Framework, das eine Alternative zu den vorhandenen Datenbank first- und Model First-Mustern bereitstellt.

Code First konzentriert sich auf die Definition Ihres Modells mithilfe von POCO-Klassen ("einfache alte CLR-Objekte"), die in Visual Basic oder C# geschrieben wurden. Diese Klassen können dann einer vorhandenen Datenbank zugeordnet oder zum Generieren eines Datenbankschemas verwendet werden. Zusätzliche Konfiguration kann mithilfe von DataAnnotations-Attributen oder mithilfe von Fluent-APIs bereitgestellt werden.

Dokumentation zur Verwendung von Code Firstwith ASP.NET MVC ist auf der website ASP.NET unter den folgenden URLs verfügbar:

https://www.asp.net/mvc/tutorials/getting-started-with-mvc3-part1-cs https://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application

Projektvorlagen enthalten JavaScript-Bibliotheken als vorinstallierte NuGet-Pakete

Wenn Sie ein neues ASP.NET MVC 3-Projekt erstellen, enthält das Projekt die zuvor erwähnten JavaScript-Dateien (z. B. die Modernizr-Bibliothek), indem Sie sie mithilfe von NuGet installieren, anstatt die Skripts direkt dem Ordner "Skripts" im Projektvorlageninhalt hinzuzufügen. Auf diese Weise können Sie NuGet verwenden, um die Skripts auf die neueste Version zu aktualisieren, wenn neue Versionen der Skripts veröffentlicht werden.

Beispielsweise ist die in der Projektvorlage enthaltene Version von jQuery aufgrund der Häufigkeit neuer jQuery-Versionen irgendwann nicht mehr aktuell. Da jQuery jedoch als installiertes NuGet-Paket enthalten ist, werden Sie im NuGet-Dialogfeld benachrichtigt, wenn neuere Versionen von jQuery verfügbar sind.

Da jQuery die Versionsnummer im Dateinamen enthält, erfordert das Aktualisieren von jQuery auf die neueste Version auch das <script> Tag, das auf die jQuery-Datei verweist, um den neuen Dateinamen zu verwenden. Andere enthaltene Skriptbibliotheken enthalten nicht die Versionsnummer im Skriptnamen, sodass sie einfacher auf ihre neuesten Versionen aktualisiert werden können.

Bekannte Probleme in ASP.NET MVC 3

  • In einigen Fällen schlägt die Installation möglicherweise mit der Fehlermeldung "Installation mit Fehlercode (0x80070643)" fehl. Informationen zum Umgehen dieses Problems finden Sie im KnowledgeBase-Artikel 2531566.
  • Das Gerüst für das Hinzufügen eines Controllers enthält keine Gerüste für Entitäten, die die Unterstützung der Entitätsvererbung innerhalb von Entity Framework nutzen. Wenn sie z. B. eine Basis-Person-Klasse haben, die von einer Kursteilnehmerklasse geerbt wird, führt das Gerüst für die Kursteilnehmerklasse zu generiertem Code, der nicht kompiliert wird.
  • Das Erstellen eines neuen ASP.NET MVC 3-Projekts in einem Lösungsordner verursacht einen NullReferenceException-Fehler . Die Problemumgehung besteht darin, das ASP.NET MVC 3-Projekt im Stammverzeichnis der Lösung zu erstellen und dann in den Lösungsordner zu verschieben.
  • IntelliSense für Razor-Syntax funktioniert nicht, wenn ReSharper installiert ist. Wenn Sie ReSharper installiert haben und die Razor IntelliSense-Unterstützung in ASP.NET MVC 3 nutzen möchten, lesen Sie den Eintrag Razor Intellisense und ReSharper auf Hadi Hariris Blog, der Möglichkeiten zur gemeinsamen Verwendung erläutert.
  • Während der Installation zeigt das Dialogfeld "EuLA-Akzeptanz" die Lizenzbedingungen in einem Fenster an, das kleiner als beabsichtigt ist.
  • Wenn Sie eine Razor-Ansicht (CSHTML oder .vbhtml-Datei ), Ansichten. ASP.NET MVC 3 enthält keine Codeausschnitte für Razor-Ansichten.. aspxselecting a code snippet for ASP.NET MVC will show snippets for
  • Wenn Sie ASP.NET MVC 3 für Visual Web Developer Express auf einem Computer installieren, auf dem Visual Studio nicht installiert ist, und später Visual Studio installieren, müssen Sie ASP.NET MVC 3 erneut installieren. Visual Studio und Visual Web Developer Express teilen Komponenten, die vom ASP.NET MVC 3-Installationsprogramm aktualisiert werden. Das gleiche Problem gilt, wenn Sie ASP.NET MVC 3 für Visual Studio auf einem Computer installieren, auf dem Visual Web Developer Express nicht vorhanden ist, und dann später Visual Web Developer Express installieren.

Änderungen in ASP.NET MVC 3 RTM

In diesem Abschnitt werden Änderungen und Fehlerkorrekturen beschrieben, die seit der RC2-Version in der ASP.NET MVC 3 RTM-Version vorgenommen wurden.

Änderung: Die Version von jQuery UI wurde auf 1.8.7 aktualisiert.

Die ASP.NET MVC-Projektvorlagen für Visual Studio wurden aktualisiert, um die neueste Version der jQuery UI-Bibliothek einzuschließen. Die Vorlagen enthalten auch den minimalen Satz von Ressourcendateien, die von jQuery UI benötigt werden, z. B. die zugehörigen CSS- und Bilddateien.

Änderung: Der StandardmodellMetadataProvider wurde wieder in "DataAnnotationsModelMetadataProvider" geändert.

Die RC2-Version von ASP.NET MVC 3 führte eine CachedDataAnnotationsMetadataProvider-Klasse ein, die das Zwischenspeichern über der vorhandenen DataAnnotationsModelMetadataProvider-Klasse als Leistungsverbesserung bereitgestellt hat. Einige Fehler wurden jedoch mit dieser Implementierung gemeldet, sodass die Änderung wiederhergestellt und in das MVC Futures-Projekt verschoben wurde, das unter ASP.NET WebStack verfügbar ist.

Behoben: Einfügen eines Teils eines Razor-Ausdrucks, der Leerzeichen enthält, führt dazu, dass er umgekehrt wird

In Vorabversionen von ASP.NET MVC 3 wird der resultierende Ausdruck umgekehrt, wenn Sie einen Teil eines Razor-Ausdrucks einfügen, der Leerzeichen in eine Razor-Datei enthält. Betrachten Sie beispielsweise den folgenden Razor-Codeblock:

@SomeMethod("first param",
100)
@AnotherMethod()

Wenn Sie den Text "first param" in der ersten Methode markieren und als Argument in die zweite Methode einfügen, lautet das Ergebnis wie folgt:

@AnotherMethod(param""first)

Das richtige Verhalten besteht darin, dass der Einfügevorgang folgendes Ergebnis haben soll:

@AnotherMethod("first param")

Dieses Problem wurde in der RTM-Version behoben, sodass der Ausdruck während des Einfügevorgangs ordnungsgemäß beibehalten wird.

Behoben: Das Umbenennen einer Razor-Datei, die im Editor geöffnet wird, deaktiviert die Syntaxfarbisierung und IntelliSense

Das Umbenennen einer Razor-Datei mithilfe von Projektmappen-Explorer während des Öffnens der Datei im Editorfenster bewirkt, dass syntaxheraushebungen und IntelliSense nicht mehr funktioniert. Dies wurde behoben, sodass hervorhebungen und IntelliSense nach einer Umbenennung beibehalten werden.

Bekannte Probleme für ASP.NET MVC 3 RTM

  • Wenn Sie Visual Studio 2010 SP1 Beta schließen, während die NuGet-Paket-Manager Konsole geöffnet ist, stürzt Visual Studio ab und versucht, den Neustart auszuführen. Dies wird in der RTM-Version von Visual Studio 2010 SP1 behoben.
  • Das ASP.NET MVC 3-Installationsprogramms kann nur eine erste Version des NuGet-Paket-Managers installieren. Nachdem Sie die ursprüngliche Version installiert haben, kann NuGet mithilfe des Visual Studio-Erweiterungs-Managers installiert und aktualisiert werden. Wenn Sie NuGet bereits installiert haben, wechseln Sie zum Visual Studio-Erweiterungskatalog, um auf die neueste Version von NuGet zu aktualisieren.
  • Das Erstellen eines neuen ASP.NET MVC 3-Projekts in einem Lösungsordner verursacht einen NullReferenceException-Fehler . Die Problemumgehung besteht darin, das ASP.NET MVC 3-Projekt im Stammverzeichnis der Lösung zu erstellen und dann in den Lösungsordner zu verschieben.
  • Das Installationsprogramm dauert möglicherweise viel länger als frühere Versionen von ASP.NET MVC. Dies liegt daran, dass Komponenten von Visual Studio 2010 aktualisiert werden.
  • IntelliSense für Razor-Syntax funktioniert nicht, wenn ReSharper installiert ist. Wenn Sie ReSharper installiert haben und die Razor IntelliSense-Unterstützung in ASP.NET MVC 3 nutzen möchten, lesen Sie den Eintrag Razor Intellisense und ReSharper auf Hadi Hariris Blog, der Möglichkeiten zur gemeinsamen Verwendung erläutert.
  • CCSHTML- und VBHTML-Ansichten, die mit der Betaversion von ASP.NET MVC 3 erstellt wurden, verfügen nicht über einen ordnungsgemäßen Buildaktionssatz, mit dem Ergebnis, dass diese Ansichtstypen beim Veröffentlichen des Projekts weggelassen werden. Der Buildaktionswert für diese Dateien sollte auf "Inhalt" festgelegt werden. ASP.NET MVC 3 RTM behebt dieses Problem für neue Dateien, korrigiert aber nicht die Einstellung für vorhandene Dateien für ein Projekt, das mit Vorabversionen erstellt wurde.
  • Screenshot des Dialogfelds
  • Während der Installation zeigt das Dialogfeld "EuLA-Akzeptanz" die Lizenzbedingungen in einem Fenster an, das kleiner als beabsichtigt ist.
  • Wenn Sie eine Razor-Ansicht (CSHTML-Datei) bearbeiten, ist das Menüelement "Gehe zu Controller" in Visual Studio nicht verfügbar, und es gibt keine Codeausschnitte.
  • Wenn Sie ASP.NET MVC 3 für Visual Web Developer Express auf einem Computer installieren, auf dem Visual Studio nicht installiert ist, und später Visual Studio installieren, müssen Sie ASP.NET MVC 3 erneut installieren. Visual Studio und Visual Web Developer Express teilen Komponenten, die vom ASP.NET MVC 3-Installationsprogramm aktualisiert werden. Das gleiche Problem gilt, wenn Sie ASP.NET MVC 3 für Visual Studio auf einem Computer installieren, auf dem Visual Web Developer Express nicht vorhanden ist, und dann später Visual Web Developer Express installieren.

Unterbrechen von Änderungen in ASP.NET MVC 3

  • In früheren Versionen von ASP.NET MVC werden Aktionsfilter pro Anforderung erstellt, außer in einigen Fällen. Dieses Verhalten war nie ein garantiertes Verhalten, sondern lediglich ein Implementierungsdetail und der Vertrag für Filter bestand darin, sie zustandslos zu betrachten. In ASP.NET MVC 3 werden Filter aggressiver zwischengespeichert. Daher können alle benutzerdefinierten Aktionsfilter, die den Instanzstatus nicht ordnungsgemäß speichern, beschädigt werden.
  • Die Reihenfolge der Ausführung für Ausnahmefilter wurde für Ausnahmefilter geändert, die denselben Order-Wert aufweisen. In ASP.NET MVC 2 und früher werden Ausnahmefilter auf dem Controller mit demselben Order-Wert wie bei einer Aktionsmethode ausgeführt, bevor die Ausnahmefilter für die Aktionsmethode ausgeführt werden. Dies wäre in der Regel der Fall, wenn Ausnahmefilter ohne einen angegebenen Order-Wert angewendet werden. In ASP.NET MVC 3 wurde diese Reihenfolge umgekehrt, sodass der spezifischste Ausnahmehandler zuerst ausgeführt wird. Wenn die Order-Eigenschaft explizit angegeben ist, werden die Filter wie in früheren Versionen in der angegebenen Reihenfolge ausgeführt.
  • Eine neue Eigenschaft namens FileExtensions wurde der VirtualPathProviderViewEngine-Basisklasse hinzugefügt. Wenn ASP.NET eine Ansicht nach Pfad (nicht nach Name) suchen, werden nur Ansichten mit einer Dateierweiterung in der liste berücksichtigt, die durch diese neue Eigenschaft angegeben ist. Dies ist eine bahnbrechende Änderung in Anwendungen, bei denen ein benutzerdefinierter Buildanbieter registriert ist, um eine benutzerdefinierte Dateierweiterung für Webformularansichten zu aktivieren und in dem der Anbieter auf diese Ansichten verweist, indem er einen vollständigen Pfad anstelle eines Namens verwendet. Die Problemumgehung besteht darin, den Wert der FileExtensions-Eigenschaft so zu ändern, dass sie die benutzerdefinierte Dateierweiterung enthält.
  • Benutzerdefinierte Controller-Factoryimplementierungen, die die IControllerFactory-Schnittstelle direkt implementieren, müssen eine Implementierung der neuen GetControllerSessionBehavior-Methode bereitstellen, die der Schnittstelle in dieser Version hinzugefügt wurde. Im Allgemeinen wird empfohlen, diese Schnittstelle nicht direkt zu implementieren und stattdessen ihre Klasse von DefaultControllerFactory abzuleiten.

Änderungen in ASP.NET MVC 3 RC2

In diesem Abschnitt werden Änderungen (neue Features und Fehlerbehebungen) beschrieben, die seit der RC-Version in der ASP.NET MVC 3 RC2-Version vorgenommen wurden.

Projektvorlagen wurden in jQuery 1.4.4, jQuery Validation 1.7 und jQuery UI 1.8.6 geändert

Die Projektvorlagen für ASP.NET MVC 3 enthalten jetzt die neuesten Versionen von jQuery, jQuery Validation und jQuery UI. jQuery UI ist eine neue Ergänzung zu den Projektvorlagen und bietet nützliche Benutzeroberflächen-Widgets. Weitere Informationen zu jQuery UI finden Sie auf der Homepage: http://jqueryui.com/.

Klasse "AdditionalMetadataAttribute" hinzugefügt

Sie können die AdditionalMetadataAttribute-Klasse verwenden, um das ModelMetadata.AdditionalValues-Wörterbuch für eine Modelleigenschaft aufzufüllen.

Angenommen, ein Ansichtsmodell verfügt über Eigenschaften, die nur für einen Administrator angezeigt werden sollen. Dieses Modell kann mit dem neuen Attribut mit AdminOnly als Schlüssel und true als Wert versehen werden, wie im folgenden Beispiel gezeigt:

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

Diese Metadaten werden für jede Anzeige- oder Editorvorlage verfügbar gemacht, wenn ein Produktansichtsmodell gerendert wird. Es liegt an Ihnen als Anwendungsentwickler, die Metadateninformationen zu interpretieren.

Verbessertes Ansichtsgerüst

Die für Gerüstansichten verwendeten T4-Vorlagen generieren jetzt Aufrufe von Vorlagenhilfsmethoden wie EditorFor anstelle von Hilfsern wie TextBoxFor. Diese Änderung verbessert die Unterstützung von Metadaten für das Modell in Form von Datenanmerkungsattributen, wenn das Dialogfeld Ansicht hinzufügen eine Ansicht generiert.

Das Gerüst für die Hinzufügen-Ansicht umfasst auch eine verbesserte Erkennung und Verwendung von Primärschlüsselinformationen für das Modell basierend auf der Konvention. Das Dialogfeld "Ansicht hinzufügen" verwendet beispielsweise diese Informationen, um sicherzustellen, dass der Primärschlüsselwert nicht als bearbeitbares Formularfeld erstellt wird.

Die Standardvorlagen "Bearbeiten" und "Erstellen" enthalten Verweise auf die jQuery-Skripts, die für die Clientüberprüfung erforderlich sind.

Html.Raw-Methode hinzugefügt

Standardmäßig codiert das Razor-Ansichtsmodul alle Werte. Der folgende Codeausschnitt codiert z. B. den HTML-Code innerhalb der Grußvariable, sodass er auf der Seite <strong>Hello World!</strong>als angezeigt wird.

@{
  string greeting = "<strong>Hello World!</strong>";
}

<p>@greeting</p>

Die neue Html.Raw-Methode bietet eine einfache Möglichkeit, nicht codierte HTML anzuzeigen, wenn der Inhalt als sicher bekannt ist. Im folgenden Beispiel wird dieselbe Zeichenfolge angezeigt, die Zeichenfolge wird jedoch als Markup gerendert:

@{
  string greeting = "<strong>Hello World!</strong>";
}

<p>@Html.Raw(greeting)</p>

Eigenschaft "Controller.ViewModel" und "View" in "ViewBag" umbenannt

Zuvor entspricht die ViewModel-Eigenschaft des Controllers der View-Eigenschaft einer Ansicht. Beide Eigenschaften bieten eine Möglichkeit für den Zugriff auf Werte des ViewDataDictionary-Objekts mithilfe einer dynamischen Eigenschaftsaccessorsyntax. Beide Eigenschaften wurden umbenannt, um Verwirrung zu vermeiden und konsistenter zu sein.

"ControllerSessionStateAttribute"-Klasse in "SessionStateAttribute" umbenannt

Die ControllerSessionStateAttribute-Klasse wurde in der RC-Version von ASP.NET MVC 3 eingeführt. Die Eigenschaft wurde umbenannt, um prägnant zu sein.

RemoteAttribute "Fields"-Eigenschaft in "AdditionalFields" umbenannt

Die Fields-Eigenschaft der RemoteAttribute-Klasse führte zu Verwirrung zwischen Benutzern. Durch das Umbenennen dieser Eigenschaft in AdditionalFields wird die Absicht klargestellt.

Umbenannt in "SkipRequestValidationAttribute" in "AllowHtmlAttribute"

Das SkipRequestValidationAttribute-Attribut wurde in AllowHtmlAttribute umbenannt, um die beabsichtigte Verwendung besser darzustellen.

Die Methode "Html.ValidationMessage" wurde geändert, um die erste nützliche Fehlermeldung anzuzeigen.

Die Html.ValidationMessage-Methode wurde behoben, um die erste nützliche Fehlermeldung anzuzeigen, anstatt einfach den ersten Fehler anzuzeigen.

Während der Modellbindung kann das ModelState-Wörterbuch aus mehreren Quellen mit Fehlermeldungen über die Eigenschaft aufgefüllt werden, einschließlich aus dem Modell selbst (wenn es IValidatableObject implementiert), von Überprüfungsattributen, die auf die Eigenschaft angewendet wurden, und von Ausnahmen ausgelöst, während auf die Eigenschaft zugegriffen wird.

Wenn die Html.ValidationMessage-Methode eine Überprüfungsmeldung anzeigt, überspringt sie Modellstatuseinträge, die eine Ausnahme enthalten, da diese in der Regel nicht für den Endbenutzer vorgesehen sind. Stattdessen sucht die Methode nach der ersten Überprüfungsmeldung, die keiner Ausnahme zugeordnet ist, und zeigt diese Meldung an. Wenn keine solche Nachricht gefunden wird, wird standardmäßig eine generische Fehlermeldung angezeigt, die der ersten Ausnahme zugeordnet ist.

Deklaration wurde behoben @model , um dem Dokument keine Leerzeichen hinzuzufügen

In früheren Versionen hat die @model Deklaration oben in einer Ansicht der gerenderten HTML-Ausgabe eine leere Zeile hinzugefügt. Dies wurde behoben, sodass die Deklaration keine Leerzeichen einführt.

Eigenschaft "FileExtensions" zum Anzeigen von Engines hinzugefügt, um modulspezifische Dateinamen zu unterstützen

Ein Ansichtsmodul kann eine Ansicht mithilfe eines expliziten Ansichtspfads zurückgeben, wie im folgenden Beispiel gezeigt:

return View("~/views/home/index.cshtml");

Das erste Ansichtsmodul versucht immer, die Ansicht zu rendern. Standardmäßig ist das Web Forms-Ansichtsmodul das erste Ansichtsmodul; da das Web Forms-Modul keine Razor-Ansicht rendern kann, tritt ein Fehler auf. Ansichtsmodule verfügen jetzt über eine FileExtensions-Eigenschaft , die verwendet wird, um anzugeben, welche Dateierweiterungen unterstützt werden. Diese Eigenschaft wird überprüft, wenn ASP.NET bestimmt, ob ein Ansichtsmodul eine Datei rendern kann. Dies ist eine bahnbrechende Änderung, und weitere Details sind im Abschnitt "Aktuelle Änderungen " dieses Dokuments enthalten.

Fixed "LabelFor" Helper to Emit the Correct Value for the "For" Attribute

Ein Fehler wurde behoben, bei dem die LabelFor-Methode ein Attribut gerendert hat, das dem Namensattribute des Eingabeelements anstelle seiner ID entspricht. Laut W3C sollte das Attribut mit der ID des Eingabeelements übereinstimmen.

Die "RenderAction"-Methode wurde behoben, um während der Modellbindung explizite Werte vorrang zu geben.

In früheren Versionen wurden explizite Werte, die an die RenderAction-Methode übergeben wurden, zugunsten der aktuellen Formularwerte während der Modellbindung innerhalb einer untergeordneten Aktion ignoriert. Durch die Korrektur wird sichergestellt, dass explizite Werte während der Modellbindung Vorrang haben.

Bahnbrechende Änderungen in ASP.NET MVC 3 RC2

  • In früheren Versionen von ASP.NET MVC wurden Aktionsfilter pro Anforderung erstellt, außer in einigen Fällen. Dieses Verhalten war nie ein garantiertes Verhalten, sondern lediglich ein Implementierungsdetail und der Vertrag für Filter bestand darin, sie zustandslos zu betrachten. In ASP.NET MVC 3 werden Filter aggressiver zwischengespeichert. Daher können alle benutzerdefinierten Aktionsfilter, die den Instanzstatus nicht ordnungsgemäß speichern, beschädigt werden.
  • Die Reihenfolge der Ausführung für Ausnahmefilter wurde für Ausnahmefilter geändert, die denselben Order-Wert aufweisen. In ASP.NET MVC 2 und früheren Versionen wurden Ausnahmefilter auf dem Controller mit demselben Order-Wert wie bei einer Aktionsmethode ausgeführt, bevor die Ausnahmefilter für die Aktionsmethode ausgeführt wurden. Dies wäre in der Regel der Fall, wenn Ausnahmefilter ohne einen angegebenen Order-Wert angewendet wurden. In ASP.NET MVC 3 wurde diese Reihenfolge umgekehrt, sodass der spezifischste Ausnahmehandler zuerst ausgeführt wird. Wenn die Order-Eigenschaft explizit angegeben ist, werden die Filter wie in früheren Versionen in der angegebenen Reihenfolge ausgeführt.
  • Eine neue Eigenschaft namens FileExtensions wurde der VirtualPathProviderViewEngine-Basisklasse hinzugefügt. Wenn ASP.NET eine Ansicht nach Pfad (nicht nach Name) suchen, werden nur Ansichten mit einer Dateierweiterung in der liste berücksichtigt, die durch diese neue Eigenschaft angegeben ist. Dies ist eine bahnbrechende Änderung in Anwendungen, bei denen ein benutzerdefinierter Buildanbieter registriert ist, um eine benutzerdefinierte Dateierweiterung für Webformularansichten zu aktivieren und in dem der Anbieter auf diese Ansichten verweist, indem er einen vollständigen Pfad anstelle eines Namens verwendet. Die Problemumgehung besteht darin, den Wert der FileExtensions-Eigenschaft so zu ändern, dass sie die benutzerdefinierte Dateierweiterung enthält.
  • Benutzerdefinierte Controller-Factoryimplementierungen, die die IControllerFactory-Schnittstelle direkt implementieren, müssen eine Implementierung der neuen GetControllerSessionBehavior-Methode bereitstellen, die der Schnittstelle in dieser Version hinzugefügt wurde. Im Allgemeinen wird empfohlen, diese Schnittstelle nicht direkt zu implementieren und stattdessen ihre Klasse von DefaultControllerFactory abzuleiten.

Bekannte Probleme in ASP.NET MVC 3 RC2

  • Das ASP.NET MVC 3-Installationsprogramms kann nur eine erste Version des NuGet-Paket-Managers installieren. Nachdem Sie die ursprüngliche Version installiert haben, kann NuGet mithilfe des Visual Studio-Erweiterungs-Managers installiert und aktualisiert werden. Wenn Sie NuGet bereits installiert haben, wechseln Sie zum Visual Studio-Erweiterungskatalog, um auf die neueste Version von NuGet zu aktualisieren.
  • Das Erstellen eines neuen ASP.NET MVC 3-Projekts in einem Lösungsordner verursacht einen NullReferenceException-Fehler . Die Problemumgehung besteht darin, das ASP.NET MVC 3-Projekt im Stammverzeichnis der Lösung zu erstellen und dann in den Lösungsordner zu verschieben.
  • Das Installationsprogramm dauert möglicherweise viel länger als frühere Versionen von ASP.NET MVC. Dies liegt daran, dass Komponenten von Visual Studio 2010 aktualisiert werden.
  • IntelliSense für Razor-Syntax funktioniert nicht, wenn ReSharper installiert ist. Wenn Sie ReSharper installiert haben und die Razor IntelliSense-Unterstützung in ASP.NET MVC 3 RC2 nutzen möchten, lesen Sie den Eintrag Razor Intellisense und ReSharper auf Hadi Hariris Blog, der Möglichkeiten zur gemeinsamen Verwendung erläutert.
  • CSHTML- und VBHTML-Ansichten, die mit der Betaversion von ASP.NET MVC 3 erstellt wurden, verfügen nicht über einen ordnungsgemäßen Buildaktionssatz, mit dem Ergebnis, dass diese Ansichtstypen beim Veröffentlichen des Projekts weggelassen werden. Der Wert "Buildaktion " für diese Dateien sollte auf "Inhalt" festgelegt werden. ASP.NET MVC 3 RC2 behebt dieses Problem für neue Dateien, korrigiert aber nicht die Einstellung für vorhandene Dateien für ein Projekt, das mit der Betaversion erstellt wurde.Screenshot des Dialogfelds
  • Während der Installation zeigt das Dialogfeld "EuLA-Akzeptanz" die Lizenzbedingungen in einem Fenster an, das kleiner als beabsichtigt ist.
  • Wenn Sie eine Razor-Ansicht (CSHTML-Datei) bearbeiten, ist das Menüelement "Gehe zu Controller" in Visual Studio nicht verfügbar, und es gibt keine Codeausschnitte.
  • Wenn Sie ASP.NET MVC 3 für Visual Web Developer Express auf einem Computer installieren, auf dem Visual Studio nicht installiert ist, und später Visual Studio installieren, müssen Sie ASP.NET MVC 3 erneut installieren. Visual Studio und Visual Web Developer Express teilen Komponenten, die vom ASP.NET MVC 3-Installationsprogramm aktualisiert werden. Das gleiche Problem gilt, wenn Sie ASP.NET MVC 3 für Visual Studio auf einem Computer installieren, auf dem Visual Web Developer Express nicht vorhanden ist, und dann später Visual Web Developer Express installieren.
  • Wenn Sie ASP.NET MVC 3 RC 2 installieren, wird NuGet nicht aktualisiert, wenn sie bereits installiert ist. Um NuGet zu aktualisieren, wechseln Sie zum Visual Studio-Erweiterungs-Manager, und es sollte als verfügbares Update angezeigt werden. Sie können NuGet von dort auf die neueste Version aktualisieren.

ASP.NET MVC 3 Release Candidate

ASP.NET MVC Release Candidate wurde am 9. November 2010 veröffentlicht.

Neue Features in ASP.NET MVC 3 RC

In diesem Abschnitt werden Features beschrieben, die seit der Betaversion in der ASP.NET MVC 3 RC-Version eingeführt wurden.

NuGet-Paket-Manager

ASP.NET MVC 3 enthält das NuGet-Paket-Manager (früher nuPack genannt), das ein integriertes Paketverwaltungstool zum Hinzufügen von Bibliotheken und Tools zu Visual Studio-Projekten ist. Dieses Tool automatisiert die Schritte, die Entwickler heute ausführen, um eine Bibliothek in ihre Quellstruktur zu integrieren.

Sie können Mit NuGet als Befehlszeilentool, als integriertes Konsolenfenster in Visual Studio 2010, über das Visual Studio-Kontextmenü und als Satz von PowerShell-Cmdlets arbeiten.

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

Verbessertes Dialogfeld "Neues Projekt"

Wenn Sie ein neues Projekt erstellen, können Sie nun im Dialogfeld "Neues Projekt" das Ansichtsmodul sowie einen ASP.NET MVC-Projekttyp angeben.

Screenshot des Dialogfelds

Unterstützung für das Ändern der Liste von Vorlagen und Ansichtsmodulen, die im Dialogfeld aufgeführt sind, ist in dieser Version enthalten.

Die Standardvorlagen sind die folgenden:

Leer. Enthält einen minimalen Satz von Dateien für ein ASP.NET MVC-Projekt, einschließlich der Standardverzeichnisstruktur für ASP.NET MVC-Projekte, einer Site.css Datei, die die standardmäßigen ASP.NET MVC-Formatvorlagen enthält, und ein Skriptverzeichnis, das die Standard-JavaScript-Dateien enthält.

Internetanwendung. Enthält Beispielfunktionen, die die Verwendung des Mitgliedschaftsanbieters mit ASP.NET MVC veranschaulicht.

Die Liste der Projektvorlagen, die im Dialogfeld angezeigt werden, wird in der Windows-Registrierung angegeben.

Sitzungslose Controller

Das neue ControllerSessionStateAttribute bietet Ihnen mehr Kontrolle über das Sitzungszustandsverhalten für Controller, indem Sie einen System.Web.SessionState.SessionStateBehavior-Enumerationswert angeben.

Das folgende Beispiel zeigt, wie Der Sitzungszustand für alle Anforderungen an einen Controller deaktiviert wird.

[ControllerSessionState(SessionStateBehavior.Disabled)]
public class CoolController : Controller {
    public ActionResult Index() {
        object o = Session["Key"]; // Causes an exception.

    }
}

Das folgende Beispiel zeigt, wie der schreibgeschützte Sitzungszustand für alle Anforderungen an einen Controller festgelegt wird.

[ControllerSessionState(SessionStateBehavior.ReadOnly)]
public class CoolController : Controller {
    public ActionResult Index() {
    Session["Key"] = "value"; // Value is not available in
    the next request
    }
}

Neue Überprüfungsattribute

CompareAttribute

Mit dem neuen CompareAttribute-Überprüfungsattribut können Sie die Werte zweier verschiedener Eigenschaften eines Modells vergleichen. Im folgenden Beispiel muss die ComparePassword-Eigenschaft mit dem Feld "Kennwort " übereinstimmen, um gültig zu sein.

public class User {
    [Required]

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

RemoteAttribute

Das neue RemoteAttribute-Überprüfungsattribut nutzt den Remote validator des jQuery Validation-Plug-Ins, mit dem clientseitige Überprüfung eine Methode auf dem Server aufgerufen werden kann, die die tatsächliche Überprüfungslogik ausführt.

Im folgenden Beispiel hat die UserName-Eigenschaft das RemoteAttribute angewendet. Wenn Sie diese Eigenschaft in einer Bearbeitungsansicht bearbeiten, ruft die Clientüberprüfung eine Aktion namens "UserNameAvailable " für die UsersController-Klasse auf, um dieses 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";
    }
}

Standardmäßig wird der Eigenschaftsname, auf den das Attribut angewendet wird, als Abfragezeichenfolgenparameter an die Aktionsmethode gesendet.

Neue Überladungen für die Methoden "LabelFor" und "LabelForModel"

Für die Methoden LabelFor und LabelForModel wurden neue Überladungen hinzugefügt, mit denen Sie den Beschriftungstext angeben können. Das folgende Beispiel zeigt, wie diese Überladungen verwendet werden.

@Html.LabelFor(m => m.PropertyName,
"Label Text");
@Html.LabelForModel("Label Text");

Zwischenspeicherung untergeordneter Aktionen

OutputCacheAttribute unterstützt die Ausgabezwischenspeicherung von untergeordneten Aktionen, die mithilfe der Html.RenderAction- oder Html.Action-Hilfsmethoden aufgerufen werden. Das folgende Beispiel zeigt eine Ansicht, die eine andere Aktion aufruft.

Hi there. The uncached time is:
@DateTime.Now
The cached time is: @Html.Action("GetDate")

Die GetDate-Aktion wird mit dem OutputCacheAttribute kommentiert:

[OutputCache(Duration = 100,
VaryByParam = "none")]
public string GetDate() {
    return DateTime.Now.ToString();
}

Wenn dieser Code ausgeführt wird, wird das Ergebnis des Aufrufs von Html.Action("GetDate") 100 Sekunden lang zwischengespeichert.

Verbesserungen im Dialogfeld "Ansicht hinzufügen"

Wenn Sie eine stark typierte Ansicht hinzufügen, filtert das Dialogfeld "Ansicht hinzufügen" jetzt mehr nicht anwendbare Typen aus als in früheren Versionen, z. B. viele kernige .NET Framework-Typen. Außerdem wird die Liste jetzt nach dem Klassennamen und nicht nach dem vollqualifizierten Typnamen sortiert, wodurch die Suche nach Typen erleichtert wird. Der Typname wird z. B. wie im folgenden Beispiel angezeigt:

ClassName (Namespace)

In früheren Versionen wurde dies wie folgt angezeigt:

Namespace.ClassName

Granulare Anforderungsüberprüfung

Die Exclude-Eigenschaft von ValidateInputAttribute ist nicht mehr vorhanden. Verwenden Sie stattdessen das neue SkipRequestValidationAttribute, um die Anforderungsüberprüfung für bestimmte Eigenschaften eines Modells während der Modellbindung übersprungen zu haben.

Angenommen, eine Aktionsmethode wird zum Bearbeiten eines Blogbeitrags verwendet:

[HttpPost]
public ActionResult Edit(BlogPostViewModel post) {
    // Save the post in the database
}

Das folgende Beispiel zeigt das Ansichtsmodell für einen Blogbeitrag.

public class BlogPostViewModel {
    public int Id {get; set;}

    public string Subject {get; set;}

    public string Description {get; set;}
}

Wenn ein Benutzer ein Markup für die Description-Eigenschaft sendet, schlägt die Modellbindung aufgrund der Anforderungsüberprüfung fehl. Um die Anforderungsüberprüfung während der Modellbindung für den Blogbeitrag Beschreibung zu deaktivieren, wenden Sie das SkipRequpestValidationAttribute auf die Eigenschaft an, wie in diesem Beispiel gezeigt:

public class BlogPostViewModel {
    public int Id {get; set;}

    public string Subject {get; set;}

    [SkipRequestValidation]

    public string Description {get; set;}
}

Um die Anforderungsüberprüfung für jede Eigenschaft des Modells zu deaktivieren, wenden Sie ValidateInputAttribute mit dem Wert "false " auf die Aktionsmethode an:

[HttpPost]
[ValidateInput(false)]
public ActionResult Edit(BlogPostViewModel post) {
    // Save the post in the database
}

Bahnbrechende Änderungen in ASP.NET MVC 3 RC

  • Die Reihenfolge der Ausführung für Ausnahmefilter wurde für Ausnahmefilter geändert, die denselben Order-Wert aufweisen. In ASP.NET MVC 2 und früheren Versionen wurden Ausnahmefilter auf dem Controller mit der gleichen Reihenfolge wie bei einer Aktionsmethode ausgeführt, bevor die Ausnahmefilter für die Aktionsmethode ausgeführt wurden. Dies wäre in der Regel der Fall, wenn Ausnahmefilter ohne einen angegebenen Order-Wert angewendet wurden. In ASP.NET MVC 3 wurde diese Reihenfolge umgekehrt, sodass der spezifischste Ausnahmehandler zuerst ausgeführt wird. Wenn die Order-Eigenschaft explizit angegeben ist, werden die Filter wie in früheren Versionen in der angegebenen Reihenfolge ausgeführt.
  • Die neue Eigenschaft " FileExtensions " wurde der VirtualPathProviderViewEngine-Basisklasse hinzugefügt. Beim Nachschlagen einer Ansicht nach Pfad (und nicht nach Name) werden nur Ansichten mit einer Dateierweiterung in der liste berücksichtigt, die durch diese neue Eigenschaft angegeben ist. Dies ist eine bahnbrechende Änderung für diejenigen, die einen benutzerdefinierten Buildanbieter registrieren, um eine benutzerdefinierte Dateierweiterung für Webformularansichten zu aktivieren und diese Ansichten mithilfe eines vollständigen Pfads anstelle eines Namens referenzieren. Die Problemumgehung besteht darin, den Wert der FileExtensions-Eigenschaft so zu ändern, dass sie die benutzerdefinierte Dateierweiterung enthält.

Bekannte Probleme in ASP.NET MVC 3 RC

  • Das Installationsprogramm dauert möglicherweise viel länger als frühere Versionen von ASP.NET MVC, da es Komponenten von Visual Studio 2010 aktualisiert.
  • Das Gerüst zum Hinzufügen von Ansichtsgerüsten beim Auswählen der schreibgeschützten Eigenschaften der typierten Ansicht. Diese sollten immer durch Gerüste ignoriert werden. Im Dialogfeld "Ansicht hinzufügen" werden auch schreibgeschützte Eigenschaften beim Generieren einer Ansicht "Bearbeiten" oder "Erstellen" erstellt. Schreibgeschützte Eigenschaften sollten nur für die Anzeige- und Listenansichten erstellt werden.
  • Das Debuggen funktioniert nicht, wenn ASP.NET MVC 3 zusammen mit dem Async-CTP installiert wird. ASP.NET MVC 3 kann nicht parallel mit dem Async-CTP installiert werden. Deinstallieren Sie das Async-CTP, um das Debuggen zu reparieren. Weitere Details finden Sie in diesem Blogbeitrag zum Deinstallieren aller Teile von ASP.NET MVC 3 RC.
  • Razor Intellisense funktioniert nicht, wenn Resharper installiert ist. Wenn Sie ReSharper installiert haben und die Razor IntelliSense-Unterstützung in ASP.NET MVC 3 RC nutzen möchten, lesen Sie bitte diesen Blogbeitrag von JetBrains, der Möglichkeiten zur gemeinsamen Verwendung erläutert.
  • CsHTML- und VBHTML-Ansichten, die mit Der Betaversion von ASP.NET MVC 3 erstellt wurden, verfügen nicht über die richtige Buildaktion, die sie aus der Veröffentlichung ausgelassen. Die Buildaktion für diese Dateien sollte auf "Inhalt" festgelegt werden. ASP.NET MVC 3 RC behebt dieses Problem für neue Dateien, korrigiert aber nicht die Einstellung für vorhandene Dateien für ein Projekt, das mit der Betaversion erstellt wurde.
  • Das Installationsprogramm dauert möglicherweise viel länger als frühere Versionen von ASP.NET MVC, da es Komponenten von Visual Studio 2010 aktualisiert.
  • Das Gerüst "Ansicht hinzufügen" beim Auswählen eines stark typierten Ansichtsgerüsts "Bearbeiten" schreibgeschützte Eigenschaften. Ebenso werden schreibgeschützte Eigenschaften für "Anzeigeansichten" gerüstet.
  • Während der Installation zeigt das Dialogfeld "EuLA-Akzeptanz" die Lizenzbedingungen in einem Fenster an, das kleiner als beabsichtigt ist.
  • Durch die Installation von Visual Studio Async CTP tritt ein Konflikt mit der Razor-Version auf, die als Teil der ASP.NET MVC 3-Toolinstallation enthalten ist. Stellen Sie sicher, dass Sie nicht versuchen, sowohl die Visual Studio Async CTP als auch die Razor-Version auf demselben Computer zu installieren.
  • Wenn Sie eine Razor-Ansicht (CSHTML-Datei) bearbeiten, ist das Menüelement "Gehe zu Controller" in Visual Studio nicht verfügbar, und es gibt keine Codeausschnitte.

ASP.NET MVC 3 Beta

ASP.NET MVC 3 Beta wurde am 6. Oktober 2010 veröffentlicht. Die folgenden Hinweise beziehen sich auf die Betaversion und unterliegen allen Updates oder Änderungen, auf die im Abschnitt ASP.NET MVC 3 Release Candidate oben verwiesen wird.

Neue Featuresin ASP.NET MVC 3 Beta

In diesem Abschnitt werden Features beschrieben, die in der ASP.NET MVC 3 Beta-Version eingeführt wurden.

NuGet-Paket-Manager

ASP.NET MVC 3 umfasst NuGet-Paket-Manager, ein integriertes Paketverwaltungstool zum Hinzufügen von Bibliotheken und Tools zu Visual Studio-Projekten. In den meisten Fällen werden die Schritte automatisiert, die Entwickler heute ausführen, um eine Bibliothek in ihre Quellstruktur zu integrieren.

Sie können mit NuGet als Befehlszeilentool, als integriertes Konsolenfenster in Visual Studio 2010, über das Visual Studio-Kontextmenü und als Satz von PowerShell-Cmdlets arbeiten.

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

Verbessertes Dialogfeld "Neues Projekt"

Wenn Sie ein neues Projekt erstellen, können Sie nun im Dialogfeld "Neues Projekt" das Ansichtsmodul sowie einen ASP.NET MVC-Projekttyp angeben.

Screenshot des Dialogfelds

Die Unterstützung für das Ändern der Liste der im Dialogfeld aufgeführten Vorlagen und Ansichtsmodule ist in dieser Version nicht enthalten.

Die Standardvorlagen sind die folgenden:

Leer. Enthält einen minimalen Satz von Dateien für ein ASP.NET MVC-Projekt, einschließlich der Standardverzeichnisstruktur für ASP.NET MVC-Projekte, einer kleinen Site.css Datei, die die standardmäßigen ASP.NET MVC-Formatvorlagen enthält, und ein Skriptverzeichnis, das die Standard-JavaScript-Dateien enthält.

Internetanwendung. Enthält Beispielfunktionen, die die Verwendung des Mitgliedschaftsanbieters in ASP.NET MVC veranschaulicht.

Vereinfachte Methode zum Angeben stark typisierter Modelle in Razor-Ansichten

Die Möglichkeit zum Angeben des Modelltyps für stark typisierte Razor-Ansichten wurde mithilfe der neuen @model Direktive für CSHTML-Ansichten und @ModelType -Direktive für VBHTML-Ansichten vereinfacht. In früheren Versionen von ASP.NET MVC würden Sie auf diese Weise ein stark typiertes Modell für Razor-Ansichten angeben:

@inherits System.Web.Mvc.WebViewPage

In dieser Version können Sie die folgende Syntax verwenden:

@model MyModelNamespace.MyModelType

Unterstützung für neue ASP.NET Webseiten-Hilfsmethoden

Die neue ASP.NET Web Pages-Technologie enthält eine Reihe von Hilfsmethoden, die nützlich sind, um häufig verwendete Funktionen zu Ansichten und Controllern hinzuzufügen. ASP.NET MVC 3 unterstützt die Verwendung dieser Hilfsmethoden innerhalb von Controllern und Ansichten (sofern zutreffend). Diese Methoden sind in der Assembly "System.Web.Helpers" enthalten. In der folgenden Tabelle sind einige der Hilfsmethoden ASP.NET Webseiten aufgeführt.

Helfer Beschreibung
Diagramm Rendert ein Diagramm in einer Ansicht. Enthält Methoden wie Chart.ToWebImage, Chart.Save und Chart.Write.
Krypto Verwendet Hashingalgorithmen, um ordnungsgemäß gesalzene und hashierte Kennwörter zu erstellen.
WebGrid Rendert eine Auflistung von Objekten (in der Regel Daten aus einer Datenbank) als Raster. Unterstützt Paging und Sortierung.
WebImage Rendert ein Bild.
WebMail Eine E-Mail sendet.

Ein Kurzübersichtsthema, in dem die Hilfsprogramme und die grundlegende Syntax aufgeführt sind, steht als Teil der Dokumentation zur ASP.NET Razor-Syntax unter der folgenden URL zur Verfügung:

https://www.asp.net/webmatrix/tutorials/asp-net-web-pages-api-reference

Zusätzliche Unterstützung für Abhängigkeitsinjektion

Basierend auf der ASP.NET MVC 3 Preview 1-Version umfasst die aktuelle Version zusätzliche Unterstützung für zwei neue Dienste und vier vorhandene Dienste sowie verbesserte Unterstützung für die Abhängigkeitsauflösung und den Common Service Locator.

Neue IControllerActivator-Schnittstelle für feinkörnige Controllerinstanziierung

Die neue IControllerActivator-Schnittstelle bietet eine differenziertere Steuerung der Instanziierung von Controllern über die Abhängigkeitsinjektion. Das folgende Beispiel zeigt die -Schnittstelle.

namespace System.Web.Mvc {
    using System.Web.Routing;

    public interface IControllerActivator {
        IController Create(RequestContext requestContext, Type controllerType);
    }
}

Kontrastieren Sie dies der Rolle der Controllerfactory. Eine Controllerfactory ist eine Implementierung der IControllerFactory-Schnittstelle, die sowohl für die Suche nach einem Controllertyp als auch für das Instanziieren einer Instanz dieses Controllertyps verantwortlich ist.

Controlleraktivatoren sind nur für die Instanziierung einer Instanz eines Controllertyps verantwortlich. Sie führen nicht den Controllertyp-Nachschlagevorgang aus. Nach dem Auffinden eines richtigen Controllertyps sollten Controller-Fabriken an eine Instanz von IControllerActivator delegiert werden, um die tatsächliche Instanziierung des Controllers zu behandeln.

Die DefaultControllerFactory-Klasse verfügt über einen neuen Konstruktor, der eine IControllerFactory-Instanz akzeptiert. Auf diese Weise können Sie Dependency Injection anwenden, um diesen Aspekt der Controllererstellung zu verwalten, ohne das Standardmäßige Nachschlageverhalten des Controllertyps außer Kraft setzen zu müssen.

IServiceLocator-Schnittstelle durch IDependencyResolver ersetzt

Basierend auf Communityfeedback hat die ASP.NET MVC 3 Beta-Version die Verwendung der IServiceLocator-Schnittstelle durch eine schlankere IDependencyResolver-Schnittstelle ersetzt, die speziell auf die Bedürfnisse von ASP.NET MVC zugeschnitten ist. Das folgende Beispiel zeigt die neue Schnittstelle:

namespace System.Web.Mvc {
    using System.Collections.Generic;

    public interface IDependencyResolver {
        object GetService(Type serviceType);
        IEnumerable<object> GetServices(Type serviceType);
    }
}

Im Rahmen dieser Änderung wurde die ServiceLocator-Klasse auch durch die DependencyResolver-Klasse ersetzt. Die Registrierung eines Abhängigkeitslösers ähnelt früheren Versionen von ASP.NET MVC:

DependencyResolver.SetResolver(myResolver);

Implementierungen dieser Schnittstelle sollten einfach an den zugrunde liegenden Abhängigkeitseinfügungscontainer delegieren, um den registrierten Dienst für den angeforderten Typ bereitzustellen.

Wenn es keine registrierten Dienste des angeforderten Typs gibt, erwartet ASP.NET MVC, dass Implementierungen dieser Schnittstelle null von GetService zurückgeben und eine leere Sammlung von GetServices zurückgeben.

Mit der neuen DependencyResolver-Klasse können Sie Klassen registrieren, die entweder die neue IDependencyResolver-Schnittstelle oder die Common Service Locator-Schnittstelle (IServiceLocator) implementieren. Weitere Informationen zu Common Service Locator finden Sie unter CommonServiceLocator auf GitHub.

Neue IViewActivator-Schnittstelle für die Instanziierung feinkörniger Ansichtsseiten

Die neue IViewPageActivator-Schnittstelle bietet eine differenziertere Kontrolle darüber, wie Ansichtsseiten über die Abhängigkeitsinjektion instanziiert werden. Dies gilt sowohl für WebFormView-Instanzen als auch für RazorView-Instanzen. Das folgende Beispiel zeigt die neue Schnittstelle:

namespace System.Web.Mvc {
    public interface IViewPageActivator {
        object Create(ControllerContext controllerContext, Type type);
    }
}

Diese Klassen akzeptieren nun ein IViewPageActivator-Konstruktorargument, mit dem Sie mithilfe der Abhängigkeitseinfügung steuern können, wie die Typen ViewPage, ViewUserControl und WebViewPage instanziiert werden.

Neue Unterstützung für Abhängigkeitslöser für vorhandene Dienste

Die neue Version enthält unterstützung der Abhängigkeitsauflösung für die folgenden Dienste:

  • Modellüberprüfungsanbieter. Klassen, die ModelValidatorProvider implementieren, können im Abhängigkeitslöser registriert werden, und das System verwendet sie zur Unterstützung der client- und serverseitigen Überprüfung.
  • Modellmetadatenanbieter. Eine einzelne Klasse, die ModelMetadataProvider implementiert, kann im Abhängigkeitslöser registriert werden, und das System verwendet diese, um Metadaten für die Vorlagen- und Validierungssysteme bereitzustellen.
  • Wertanbieter. Klassen, die ValueProviderFactory implementieren, können im Abhängigkeitslöser registriert werden, und das System verwendet diese zum Erstellen von Wertanbietern, die vom Controller und während der Modellbindung verwendet werden.
  • Modellbinder. Klassen, die IModelBinderProvider implementieren, können im Abhängigkeitslöser registriert werden, und das System verwendet diese zum Erstellen von Modellordnern, die vom Modellbindungssystem verwendet werden.

Neue Unterstützung für unaufdringliche jQuery-basierte Ajax

ASP.NET MVC enthält Ajax-Hilfsmethoden wie die folgenden:

  • Ajax.ActionLink
  • Ajax.RouteLink
  • Ajax.BeginForm
  • Ajax.BeginRouteForm

Diese Methoden verwenden JavaScript, um eine Aktionsmethode auf dem Server aufzurufen, anstatt einen vollständigen Postback zu verwenden. Diese Funktionalität wurde aktualisiert, um jQuery auf unaufdringliche Weise zu nutzen. Anstatt intrusives Inlineclientskripts auszublenden, trennen diese Hilfsmethoden das Verhalten vom Markup durch Das Ausstellen von HTML5-Attributen mithilfe des Daten-Ajax-Präfixes . Das Verhalten wird dann auf das Markup angewendet, indem auf die entsprechenden JavaScript-Dateien verwiesen wird. Stellen Sie sicher, dass auf die folgenden JavaScript-Dateien verwiesen wird:

  • jquery-1.4.1.js
  • jquery.unobtrusive.ajax.js

Dieses Feature ist in der Datei "Web.config" in der ASP.NET MVC 3 neuen Projektvorlagen standardmäßig aktiviert, ist aber standardmäßig für vorhandene Projekte deaktiviert. Weitere Informationen finden Sie unter Hinzugefügte anwendungsweite Flags für die Clientüberprüfung und unauffälliges JavaScript weiter unten in diesem Dokument.

Neue Unterstützung für unaufdringliche jQuery-Validierung

Standardmäßig verwendet ASP.NET MVC 3 Beta die jQuery-Validierung unauffällig, um eine clientseitige Überprüfung durchzuführen. Um die unauffällige Clientüberprüfung zu aktivieren, führen Sie einen Aufruf wie die folgende aus einer Ansicht aus:

Html.EnableClientValidation();

Dies erfordert, dass die Eigenschaft "ViewContext.UnobtrusiveJavaScriptEnabled" auf "true" festgelegt ist, die Sie durch den folgenden Aufruf ausführen können:

Html.EnableUnobtrusiveJavaScript();

Stellen Sie außerdem sicher, dass auf die folgenden JavaScript-Dateien verwiesen wird.

  • jquery-1.4.1.js
  • jquery.validate.js
  • jquery.validate.unobtrusive.js

Dieses Feature ist standardmäßig in der Datei "Web.config" in den neuen ASP.NET MVC 3-Projektvorlagen aktiviert, ist jedoch standardmäßig für vorhandene Projekte deaktiviert. Weitere Informationen finden Sie unter "Neue anwendungsweite Flags für die Clientüberprüfung und unauffälliges JavaScript weiter unten in diesem Dokument".

Neue anwendungsweite Flags für die Clientüberprüfung und unauffälliges JavaScript

Sie können die Clientüberprüfung und unaufdringliche JavaScript global mithilfe statischer Member der HtmlHelper-Klasse aktivieren oder deaktivieren, wie im folgenden Beispiel gezeigt:

HtmlHelper.ClientValidationEnabled = true;
HtmlHelper.UnobtrusiveJavaScriptEnabled = true;

Die Standardprojektvorlagen aktivieren standardmäßig unauffälliges JavaScript. Sie können diese Features auch in der Stammdatei "Web.config" Ihrer Anwendung mithilfe der folgenden Einstellungen aktivieren oder deaktivieren:

<configuration>
        <appSettings>
            <add key="ClientValidationEnabled" value="true"/>
            <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
        </appSettings>
    </configuration>

Da Sie diese Features standardmäßig aktivieren können, wurden neue Überladungen in die HtmlHelper-Klasse eingeführt, mit der Sie die Standardeinstellungen außer Kraft setzen können, wie in den folgenden Beispielen gezeigt:

public void EnableClientValidation();
public void EnableClientValidation(bool enabled);
public void EnableUnobtrusiveJavaScript();
public void EnableUnobtrusiveJavaScript(bool enabled);

Aus Gründen der Abwärtskompatibilität sind beide Features standardmäßig deaktiviert.

Neue Unterstützung für Code, der vor der Ausführung von Ansichten ausgeführt wird

Sie können nun eine Datei mit dem Namen _viewstart.cshtml (oder _viewstart.vbhtml) in das Views-Verzeichnis einfügen und ihm Code hinzufügen, der zwischen mehreren Ansichten in diesem Verzeichnis und seinen Unterverzeichnissen freigegeben wird. Sie können beispielsweise den folgenden Code in die Seite _viewstart.cshtml im Ordner "~/Views" einfügen:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

Dadurch wird die Layoutseite für jede Ansicht im Ordner "Ansichten" und alle unterordner rekursiv festgelegt. Wenn eine Ansicht gerendert wird, wird der Code in der Datei _viewstart.cshtml ausgeführt, bevor der Ansichtscode ausgeführt wird. Der code _viewstart.cshtml gilt für jede Ansicht in diesem Ordner.

Standardmäßig gilt der Code in der Datei _viewstart.cshtml auch für Ansichten in jedem Unterordner. Einzelne Unterordner können jedoch über eine eigene Version der Datei _viewstart.cshtml verfügen; in diesem Fall hat die lokale Version Vorrang. Wenn Sie z. B. Code ausführen möchten, der für alle Ansichten für den HomeController gemeinsam ist, fügen Sie eine datei "_viewstart.cshtml" im Ordner "~/Views/Home" ein.

Neue Unterstützung für die VBHTML Razor-Syntax

Die vorherige ASP.NET MVC-Vorschau enthielt Unterstützung für Ansichten mithilfe der Razor-Syntax basierend auf C#. Diese Ansichten verwenden die Dateierweiterung CSHTML. Im Rahmen der laufenden Arbeit zur Unterstützung von Razor führt die ASP.NET MVC 3 Beta Unterstützung für die Razor-Syntax in Visual Basic ein, die die .vbhtml-Dateierweiterung verwendet.

Eine Einführung in die Verwendung der Visual Basic-Syntax auf VBHTML-Seiten finden Sie im Lernprogramm unter der folgenden URL:

https://www.asp.net/webmatrix/tutorials/asp-net-web-pages-visual-basic

Genauere Kontrolle über ValidateInputAttribute

ASP.NET MVC enthält immer die ValidateInputAttribute-Klasse, die die Kern-ASP.NET Anforderungsüberprüfungsinfrastruktur aufruft, um sicherzustellen, dass die eingehende Anforderung keine potenziell schädlichen Eingaben enthält. Standardmäßig ist die Eingabeüberprüfung aktiviert. Es ist möglich, die Anforderungsüberprüfung mithilfe des ValidateInputAttribute-Attributs zu deaktivieren, wie im folgenden Beispiel gezeigt:

[ValidateInput(false)]
public ActionResult SomeAction() {
    return View();
}

Viele Webanwendungen verfügen jedoch über einzelne Formularfelder, die HTML zulassen müssen, während die verbleibenden Felder nicht erforderlich sind. Mit der ValidateInputAttribute-Klasse können Sie jetzt eine Liste von Feldern angeben, die nicht in die Anforderungsüberprüfung einbezogen werden sollen.

Wenn Sie beispielsweise ein Blogmodul entwickeln, können Sie Markup in den Feldern "Textkörper" und "Zusammenfassung" zulassen. Diese Felder können durch zwei Eingabeelemente dargestellt werden, jeweils mit einem Namensattribute, das dem Eigenschaftennamen ("Body" und "Summary") entspricht. Um die Anforderungsüberprüfung nur für diese Felder zu deaktivieren, geben Sie die Namen (durch Trennzeichen getrennt) in der Exclude-Eigenschaft der ValidateInput-Klasse an, wie im folgenden Beispiel gezeigt:

[ValidateInput(true, Exclude="Body, Summary")]
public ActionResult About() {
    return View();
}

Hilfsprogramme konvertieren Unterstriche in Bindestriche für HTML-Attributnamen, die mit anonymen Objekten angegeben wurden

Mithilfe von Hilfsmethoden können Sie Attributnamen-Wert-Paare mithilfe eines anonymen Objekts angeben, wie im folgenden Beispiel gezeigt:

Html.TextBox("Name", "Value", new {title = "Title"})

Mit diesem Ansatz können Sie keine Bindestriche im Attributnamen verwenden, da ein Bindestrich nicht für einen Eigenschaftsnamen in ASP.NET verwendet werden kann. Bindestriche sind jedoch wichtig für benutzerdefinierte HTML5-Attribute; BEISPIELSWEISE verwendet HTML5 das Präfix "data-".

Gleichzeitig können Unterstriche nicht für Attributnamen in HTML verwendet werden, sind aber innerhalb von Eigenschaftsnamen gültig. Wenn Sie daher Attribute mit einem anonymen Objekt angeben und die Attributnamen einen Unterstrich enthalten, werden die Unterstriche mit Hilfsmethoden in Bindestriche konvertiert. Die folgende Hilfssyntax verwendet beispielsweise einen Unterstrich:

Html.TextBox("Name", "Value", new {data_required = "true"})

Im vorherigen Beispiel wird das folgende Markup gerendert, wenn das Hilfsprogramm ausgeführt wird:

<input data-required="true" id="Name" name="Name"
       type="textbox" value="Value" />

Fehlerkorrekturen

Die Standardobjektvorlage für die Hilfsprogramme "EditorFor" und "DisplayFor" unterstützt jetzt die in der Eigenschaft "DisplayAttribute.Order" angegebene Reihenfolge. (In früheren Versionen wurde die Einstellung "Reihenfolge" nicht verwendet.)

Die Clientüberprüfung unterstützt jetzt die Überprüfung von überschriebenen Eigenschaften, auf die Überprüfungsattribute angewendet wurden.

JsonValueProviderFactory ist jetzt standardmäßig registriert.

Aktuelle Änderungen

Die Reihenfolge der Ausführung für Ausnahmefilter wurde für Ausnahmefilter geändert, die denselben Order-Wert aufweisen. In ASP.NET MVC 2 und früheren Versionen wurden Ausnahmefilter auf dem Controller mit der gleichen Reihenfolge wie bei einer Aktionsmethode ausgeführt, bevor die Ausnahmefilter für die Aktionsmethode ausgeführt wurden. Dies wäre in der Regel der Fall, wenn Ausnahmefilter ohne einen angegebenen Order-Wert angewendet wurden. In ASP.NET MVC 3 wurde diese Reihenfolge umgekehrt, sodass der spezifischste Ausnahmehandler zuerst ausgeführt wird. Wenn die Order-Eigenschaft explizit angegeben ist, werden die Filter wie in früheren Versionen in der angegebenen Reihenfolge ausgeführt.

Bekannte Probleme

Während der Installation zeigt das Dialogfeld "EuLA-Akzeptanz" die Lizenzbedingungen in einem Fenster an, das kleiner als beabsichtigt ist.

Razor-Ansichten verfügen nicht über IntelliSense-Unterstützung oder Syntaxherhebung. Es wird erwartet, dass die Unterstützung für razor-Syntax in Visual Studio als Teil einer späteren Version enthalten sein wird.

Wenn Sie eine Razor-Ansicht (CSHTML-Datei) bearbeiten, ist das Menüelement "Gehe zu Controller" in Visual Studio nicht verfügbar, und es gibt keine Codeausschnitte.

Wenn Sie die @model Syntax verwenden, um eine stark typisierte CSHTML-Ansicht anzugeben, werden sprachspezifische Tastenkombinationen für Typen nicht erkannt. Int funktioniert beispielsweise nicht, @model aber @model Int32 funktioniert. Die Problemumgehung für diesen Fehler besteht darin, den tatsächlichen Typnamen zu verwenden, wenn Sie den Modelltyp angeben.

Wenn Sie die @model Syntax zum Angeben einer stark typisierten CSHTML-Ansicht (oder @ModelType zum Angeben einer stark typisierten VBHTML-Ansicht) verwenden, werden nullfähige Typen und Arraydeklarationen nicht unterstützt. Int? wird z. B @model . nicht unterstützt. Verwenden Sie stattdessen @model Nullable<Int32>. Die Syntaxzeichenfolge @model [] wird ebenfalls nicht unterstützt; verwenden Sie @model IList<string>stattdessen .

Wenn Sie ein Upgrade eines ASP.NET MVC 2-Projekts auf ASP.NET MVC 3 durchführen, müssen Sie folgendes dem Abschnitt "appSettings" der Datei "Web.config" hinzufügen:

<appSettings>
  <add key="enableSimpleMembership" value="false" />
</appSettings>

Es gibt ein bekanntes Problem, das bewirkt, dass die Formularauthentifizierung immer nicht authentifizierte Benutzer an ~/Account/Login umleitet, wobei die in Web.config verwendete Formularauthentifizierungseinstellung ignoriert wird. Die Problemumgehung besteht darin, die folgende App-Einstellung hinzuzufügen.

<add key="autoFormsAuthentication" value="false" />

Haftungsausschluss

© 2011 Microsoft Corporation. Alle Rechte vorbehalten. Dieses Dokument wird „wie besehen“ zur Verfügung gestellt. Die in diesem Dokument enthaltenen Informationen und zum Ausdruck gebrachten Ansichten, auch URL- und andere Internet-Websitebezüge, können ohne vorherige Ankündigung geändert werden. Sie tragen das alleinige Verwendungsrisiko.

Dieses Dokument stellt keinerlei Rechtsansprüche auf geistiges Eigentum in Microsoft-Produkten jeglicher Art bereit. Dieses Dokument darf für interne Referenzzwecke kopiert und verwendet werden.