Teil 6: Modellüberprüfung mithilfe von Datenanmerkungen

von Jon Galloway

Der MVC Music Store ist eine Lernprogramm Anwendung, die Schritt für Schritt erläutert, wie ASP.NET MVC und Visual Studio für die Webentwicklung verwendet werden.

Der MVC Music Store ist eine einfache Beispiel Speicher Implementierung, die Musikalben online verkauft und grundlegende Funktionen für Website Verwaltung, Benutzeranmeldung und Warenkorb implementiert.

In dieser tutorialreihe werden alle Schritte erläutert, die zum Erstellen der ASP.NET MVC Music Store-Beispielanwendung ausgeführt wurden. In Teil 6 wird die Verwendung von Daten Anmerkungen für die Modell Validierung behandelt.

Das Erstellungs-und Bearbeitungs Formular hat ein großes Problem: Sie führen keine Validierung durch. Wir können z. b. die Pflichtfelder leer lassen oder Buchstaben im Feld Price eingeben. der erste Fehler, den wir sehen werden, ist die Datenbank.

Wir können unserer Anwendung problemlos eine Validierung hinzufügen, indem wir unseren Modellklassen Daten Anmerkungen hinzufügen. Mit Daten Anmerkungen können wir die Regeln beschreiben, die auf unsere Modell Eigenschaften angewendet werden sollen, und ASP.NET MVC übernimmt die Erzwingung und zeigt die entsprechenden Nachrichten für unsere Benutzer an.

Hinzufügen von Validierungen zu unseren Album Formularen

Wir verwenden die folgenden Daten Anmerkungen-Attribute:

  • Required – gibt an, dass die Eigenschaft ein Pflichtfeld ist.
  • Display Name – definiert den Text, der für Formularfelder und Validierungs Nachrichten verwendet werden soll.
  • StringLength – definiert eine maximale Länge für ein Zeichen folgen Feld.
  • Range – gibt einen maximalen und minimalen Wert für ein numerisches Feld an.
  • Bind – listet Felder auf, die beim Binden von Parameter-oder Formular Werten an Modell Eigenschaften ausgeschlossen oder eingeschlossen werden sollen.
  • Gerüst Column – ermöglicht das Ausblenden von Feldern aus Editor Formularen

Hinweis: Weitere Informationen zur Modell Validierung mithilfe von Attributen für die Daten Anmerkung finden Sie in der MSDN-Dokumentation unter.https://go.microsoft.com/fwlink/?LinkId=159063

Öffnen Sie die Album-Klasse, und fügen Sie die folgenden using -Anweisungen am Anfang hinzu.

using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;

Aktualisieren Sie anschließend die Eigenschaften, um die Anzeige-und Validierungs Attribute hinzuzufügen, wie unten gezeigt.

namespace MvcMusicStore.Models
{
    [Bind(Exclude = "AlbumId")]
    public class Album
    {
        [ScaffoldColumn(false)]
        public int      AlbumId    { get; set; }
        [DisplayName("Genre")]
        public int      GenreId    { get; set; }
        [DisplayName("Artist")]
        public int      ArtistId   { get; set; }
        [Required(ErrorMessage = "An Album Title is required")]
        [StringLength(160)]
        public string   Title      { get; set; }
        [Range(0.01, 100.00,
            ErrorMessage = "Price must be between 0.01 and 100.00")]
        public decimal Price       { get; set; }
        [DisplayName("Album Art URL")]
        [StringLength(1024)]
        public string AlbumArtUrl { get; set; }
        public virtual Genre  Genre    { get; set; }
        public virtual Artist Artist   { get; set; }
    }
}

Während wir dort sind, haben wir auch das Genre und den Künstler in Virtual Properties geändert. Dadurch können Entity Framework diese ggf. verzögert laden.

public virtual Genre    Genre       { get; set; }
public virtual Artist   Artist      { get; set; }

Nachdem diese Attribute dem Album Modell hinzugefügt wurden, beginnt der Bildschirm zum Erstellen und bearbeiten sofort mit der Überprüfung der Felder und der Verwendung der ausgewählten anzeigen Amen (z. b. "Album Kunst-URL" anstelle von "albumarturl"). Führen Sie die Anwendung aus, und navigieren Sie zu/StoreManager/Create.

Als nächstes unterbrechen wir einige Validierungsregeln. Geben Sie einen Preis von 0 ein, und lassen Sie den Titel leer. Wenn Sie auf die Schaltfläche "erstellen" klicken, wird das Formular mit Validierungs Fehlermeldungen angezeigt, das anzeigt, welche Felder die von uns definierten Validierungsregeln nicht erfüllen.

Testen der Client seitigen Validierung

Die Server seitige Validierung ist aus Anwendungs Sicht sehr wichtig, da Benutzer die Client seitige Validierung umgehen können. Webseiten Formulare, die nur serverseitige Validierung implementieren, weisen jedoch drei bedeutende Probleme auf.

  1. Der Benutzer muss warten, bis das Formular gepostet, auf dem Server überprüft und die Antwort an den Browser gesendet wird.
  2. Der Benutzer erhält kein sofortiges Feedback, wenn er ein Feld korrigiert, sodass es nun die Validierungsregeln übergibt.
  3. Wir verschwenden Server Ressourcen, um Validierungs Logik auszuführen, anstatt den Browser des Benutzers zu nutzen.

Glücklicherweise ist für die ASP.NET MVC 3-Gerüst Vorlagen die Client seitige Validierung integriert, sodass keine zusätzliche Arbeit erforderlich ist.

Wenn Sie einen einzelnen Buchstaben im Feld "Title" eingeben, werden die Überprüfungsanforderungen erfüllt, sodass die Validierungs Meldung sofort entfernt wird.