Aktualisieren, löschen und Erstellen von Daten mit Modell Bindung und Web Forms

von Tom fitzmacken

In dieser tutorialreihe werden grundlegende Aspekte der Verwendung der Modell Bindung mit einem ASP.net Web Forms-Projekt veranschaulicht. Die Modell Bindung sorgt für eine genauere Daten Interaktion als bei der Verarbeitung von Datenquellen Objekten (z. b. ObjectDataSource oder SqlDataSource). Diese Serie beginnt mit Einführungs Material und wechselt in spätere Tutorials zu erweiterten Konzepten.

In diesem Tutorial wird gezeigt, wie Sie Daten mit Modell Bindung erstellen, aktualisieren und löschen. Legen Sie die folgenden Eigenschaften fest:

  • DeleteMethod
  • InsertMethod
  • UpdateMethod

Diese Eigenschaften erhalten den Namen der Methode, die den entsprechenden Vorgang behandelt. Innerhalb dieser Methode stellen Sie die Logik zum interagieren mit den Daten bereit.

Dieses Tutorial baut auf dem Projekt auf, das im ersten Teil der Reihe erstellt wurde.

Sie können das gesamte Projekt in C# oder VB herunterladen . Der herunterladbare Code funktioniert entweder mit Visual Studio 2012 oder Visual Studio 2013. Dabei wird die Vorlage Visual Studio 2012 verwendet, die sich geringfügig von der in diesem Tutorial gezeigten Visual Studio 2013 Vorlage unterscheidet.

Was Sie erstellen

In diesem Tutorial gehen Sie wie folgt vor:

  1. Hinzufügen dynamischer Datenvorlagen
  2. Aktivieren des Aktualisierens und Löschens von Daten durch Modell Bindungsmethoden
  3. Anwenden von Daten Validierungsregeln: Aktivieren Sie das Erstellen eines neuen Datensatzes in der Datenbank.

Hinzufügen dynamischer Datenvorlagen

Zum Bereitstellen der optimalen Benutzer Leistung und Minimieren der Code Wiederholung verwenden Sie dynamische Datenvorlagen. Sie können vorgefertigte dynamische Datenvorlagen problemlos in Ihre vorhandene Site integrieren, indem Sie ein nuget-Paket installieren.

Installieren Sie die dynamicdatatemplatescsüber die nuget-Pakete verwalten.

dynamische Datenvorlagen

Beachten Sie, dass Ihr Projekt jetzt einen Ordner mit dem Namen " DynamicData" enthält. In diesem Ordner finden Sie die Vorlagen, die automatisch auf dynamische Steuerelemente in ihren Webformularen angewendet werden.

Ordner für dynamische Daten

Aktualisieren und löschen aktivieren

Das Aktualisieren und Löschen von Datensätzen in der Datenbank durch Benutzer ist dem Prozess zum Abrufen von Daten sehr ähnlich. In den Eigenschaften UpdateMethod und DeleteMethod geben Sie die Namen der Methoden an, die diese Vorgänge ausführen. Mit einem GridView-Steuerelement können Sie auch die automatische Generierung von Schaltflächen zum Bearbeiten und Löschen angeben. Der folgende markierte Code zeigt die Ergänzungen zum GridView-Code.

<asp:GridView runat="server" ID="studentsGrid"
    ItemType="ContosoUniversityModelBinding.Models.Student" DataKeyNames="StudentID"
    SelectMethod="studentsGrid_GetData"
    UpdateMethod="studentsGrid_UpdateItem" DeleteMethod="studentsGrid_DeleteItem"
    AutoGenerateEditButton="true" AutoGenerateDeleteButton="true"  
    AutoGenerateColumns="false">

Fügen Sie in der Code Behind-Datei eine using-Anweisung für System. Data. Entity. Infrastructurehinzu.

using System.Data.Entity.Infrastructure;

Fügen Sie dann die folgenden Aktualisierungs-und Löschmethoden hinzu.

public void studentsGrid_UpdateItem(int studentID)
{
    using (SchoolContext db = new SchoolContext())
    {
        Student item = null;
        item = db.Students.Find(studentID);
        if (item == null)
        {
            ModelState.AddModelError("", 
              String.Format("Item with id {0} was not found", studentID));
            return;
        }
              
        TryUpdateModel(item);
        if (ModelState.IsValid)
        {
            db.SaveChanges();
        }
    }
}

public void studentsGrid_DeleteItem(int studentID)
{
    using (SchoolContext db = new SchoolContext())
    {
        var item = new Student { StudentID = studentID };
        db.Entry(item).State = EntityState.Deleted;
        try
        {
            db.SaveChanges();
        }
        catch (DbUpdateConcurrencyException)
        {
            ModelState.AddModelError("", 
              String.Format("Item with id {0} no longer exists in the database.", studentID));
        }
    }
}

Die tryupdatemodel -Methode wendet die übereinstimmenden Daten gebundenen Werte aus dem Webformular auf das Datenelement an. Das Datenelement wird basierend auf dem Wert des ID-Parameters abgerufen.

Validierungsanforderungen erzwingen

Die Validierungs Attribute, die Sie auf die Eigenschaften "FirstName", "LastName" und "Year" in der Klasse "Student" angewendet haben, werden beim Aktualisieren der Daten automatisch erzwungen. Die DynamicField-Steuerelemente fügen Client-und Server Validierungs Steuerelemente basierend auf den Validierungs Attributen hinzu. Die Eigenschaften FirstName und LastName sind beide erforderlich. FirstName darf nicht länger als 20 Zeichen sein, und LastName darf nicht länger als 40 Zeichen sein. Year muss ein gültiger Wert für die "akadecyear"-Enumeration sein.

Wenn der Benutzer gegen eine der Überprüfungsanforderungen verstößt, wird das Update nicht fortgesetzt. Fügen Sie über der GridView ein ValidationSummary-Steuerelement hinzu, um die Fehlermeldung anzuzeigen. Legen Sie die Eigenschaft showmodelstateerrors auf truefest, um die Validierungs Fehler aus der Modell Bindung anzuzeigen.

<asp:ValidationSummary ShowModelStateErrors="true" runat="server" />

Führen Sie die-Webanwendung aus, und aktualisieren und löschen Sie alle Datensätze.

Aktualisieren von Daten

Beachten Sie, dass der Wert für die Year-Eigenschaft im Bearbeitungsmodus automatisch als Dropdown Liste gerendert wird. Die Year-Eigenschaft ist ein Enumerationswert, und die Vorlage für dynamische Daten für einen Enumerationswert gibt eine Dropdown Liste zum Bearbeiten an. Sie finden diese Vorlage, indem Sie die- Enumeration_Datei "Edit. ascx " im Ordner " DynamicData/FieldTemplates " öffnen.

Wenn Sie gültige Werte angeben, wird das Update erfolgreich abgeschlossen. Wenn Sie gegen eine der Überprüfungsanforderungen verstoßen, wird das Update nicht fortgesetzt, und es wird eine Fehlermeldung oberhalb des Rasters angezeigt.

Fehlermeldung

Neue Datensätze hinzufügen

Das GridView-Steuerelement enthält nicht die InsertMethod -Eigenschaft und kann daher nicht zum Hinzufügen eines neuen Datensatzes mit Modell Bindung verwendet werden. Sie finden die InsertMethod-Eigenschaft in den Steuerelementen FormView, DetailsViewoder ListView . In diesem Tutorial verwenden Sie ein FormView-Steuerelement, um einen neuen Datensatz hinzuzufügen.

Fügen Sie zunächst einen Link zur neuen Seite hinzu, die Sie zum Hinzufügen eines neuen Datensatzes erstellen. Fügen Sie oberhalb von ValidationSummary Folgendes hinzu:

<asp:HyperLink NavigateUrl="~/AddStudent" Text="Add New Student" runat="server" />

Der neue Link wird am oberen Rand des Inhalts für die Seite "Studenten" angezeigt.

neuer Link

Fügen Sie dann ein neues Webformular mithilfe einer Master Seite hinzu, und nennen Sie es " addstudent". Wählen Sie Site. Master als Master Seite aus.

Sie werden die Felder zum Hinzufügen eines neuen Studenten mithilfe eines dynamicenti- Steuer Elements gereinigen. Das dynamikty-Steuerelement rendert diese bearbeitbaren Eigenschaften in der Klasse, die in der ItemType-Eigenschaft angegeben ist. Die StudentID-Eigenschaft wurde mit dem Attribut [gerüstcolumn (false)] gekennzeichnet, sodass es nicht gerendert wird. Fügen Sie im Platzhalter mainContent der Seite addstudent den folgenden Code hinzu.

<asp:ValidationSummary runat="server" ShowModelStateErrors="true" />
<asp:FormView runat="server" ID="addStudentForm"
    ItemType="ContosoUniversityModelBinding.Models.Student" 
    InsertMethod="addStudentForm_InsertItem" DefaultMode="Insert"
    RenderOuterTable="false" OnItemInserted="addStudentForm_ItemInserted">
    <InsertItemTemplate>
        <fieldset>
            <ol>
                <asp:DynamicEntity runat="server" Mode="Insert" />
            </ol>
            <asp:Button runat="server" Text="Insert" CommandName="Insert" />
            <asp:Button runat="server" Text="Cancel" CausesValidation="false" OnClick="cancelButton_Click" />
        </fieldset>
    </InsertItemTemplate>
</asp:FormView>

Fügen Sie in der Code Behind-Datei (AddStudent.aspx.cs) eine using -Anweisung für den contosouniversitymodelbinding. Models -Namespace hinzu.

using ContosoUniversityModelBinding.Models;

Fügen Sie dann die folgenden Methoden hinzu, um anzugeben, wie ein neuer Datensatz und ein Ereignishandler für die Schaltfläche Abbrechen eingefügt werden sollen.

public void addStudentForm_InsertItem()
{
    var item = new Student();
            
    TryUpdateModel(item);
    if (ModelState.IsValid)
    {
        using (SchoolContext db = new SchoolContext())
        {
            db.Students.Add(item);
            db.SaveChanges();
        }
    }
}

protected void cancelButton_Click(object sender, EventArgs e)
{
    Response.Redirect("~/Students");
}

protected void addStudentForm_ItemInserted(object sender, FormViewInsertedEventArgs e)
{
    Response.Redirect("~/Students");
}

Speichern Sie alle Änderungen.

Führen Sie die Webanwendung aus, und erstellen Sie einen neuen Studenten.

neuen Studenten hinzufügen

Klicken Sie auf Einfügen , und beachten Sie, dass der neue Student erstellt wurde.

neuen Studenten anzeigen

Zusammenfassung

In diesem Tutorial haben Sie das Aktualisieren, löschen und Erstellen von Daten ermöglicht. Sie haben bei der Interaktion mit den Daten sichergestellt, dass Validierungsregeln angewendet werden.

Im nächsten Tutorial dieser Reihe aktivieren Sie das Sortieren, Paging und das Filtern von Daten.