Freigeben über


Verwenden von Abfragezeichenfolgenwerten zum Filtern von Daten mit Modellbindung und Webformularen

von Tom FitzMacken

In dieser Tutorialreihe werden grundlegende Aspekte der Verwendung der Modellbindung mit einem ASP.NET Web Forms-Projekt veranschaulicht. Die Modellbindung macht die Dateninteraktion einfacher als den Umgang mit Datenquellenobjekten (z. B. ObjectDataSource oder SqlDataSource). Diese Reihe beginnt mit einführungsmaterial und geht in späteren Tutorials zu komplexeren Konzepten über.

In diesem Tutorial erfahren Sie, wie Sie einen Wert in der Abfragezeichenfolge übergeben und diesen Wert verwenden, um Daten über die Modellbindung abzurufen.

Dieses Tutorial baut auf dem Projekt auf, das in den früheren Teilen 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. Es verwendet die Visual Studio 2012-Vorlage, die sich geringfügig von der in diesem Tutorial gezeigten vorlage Visual Studio 2013 unterscheidet.

Funktion des erstellten Programms

In diesem Tutorial gehen Sie wie folgt vor:

  1. Hinzufügen einer neuen Seite zum Anzeigen der registrierten Kurse für einen Kursteilnehmer
  2. Abrufen der registrierten Kurse für den ausgewählten Kursteilnehmer basierend auf einem Wert in der Abfragezeichenfolge
  3. Hinzufügen eines Links mit einem Abfragezeichenfolgenwert aus der Rasteransicht zur neuen Seite

Die Schritte in diesem Tutorial ähneln den Schritten im vorherigen Tutorial , um die angezeigten Kursteilnehmer basierend auf der Benutzerauswahl in einer Dropdownliste zu filtern. In diesem Tutorial haben Sie das Control-Attribut in der select-Methode verwendet, um anzugeben, dass der Parameterwert von einem Steuerelement stammt. In diesem Tutorial verwenden Sie das QueryString-Attribut in der select-Methode, um anzugeben, dass der Parameterwert aus der Abfragezeichenfolge stammt.

Neue Seite zum Anzeigen der Kurse eines Kursteilnehmers hinzufügen

Fügen Sie ein neues Webformular hinzu, das die Website verwendet. master master Seite, und nennen Sie die Seite Kurse.

Fügen Sie in der Datei Courses.aspx eine Rasteransicht hinzu, um die Kurse für den ausgewählten Kursteilnehmer anzuzeigen.

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
    <asp:GridView runat="server" ID="coursesGrid"
        ItemType="ContosoUniversityModelBinding.Models.Enrollment"
        SelectMethod="coursesGrid_GetData" AutoGenerateColumns="false">
        <Columns>
            <asp:BoundField HeaderText="Title" DataField="Course.Title" />
            <asp:BoundField HeaderText="Credits" DataField="Course.Credits" />
            <asp:BoundField HeaderText="Grade" DataField="Grade" />
        </Columns>
        <EmptyDataTemplate>
            <asp:Label Text="No Enrolled Courses" runat="server" />
        </EmptyDataTemplate>
    </asp:GridView>
</asp:Content>

Definieren der Select-Methode

In Courses.aspx.cs fügen Sie die select-Methode mit dem Namen hinzu, den Sie in der SelectMethod-Eigenschaft der Rasteransicht angegeben haben. In dieser Methode definieren Sie die Abfrage zum Abrufen der Kurse eines Kursteilnehmers und geben an, dass der Parameter aus einem Abfragezeichenfolgenwert mit demselben Namen wie der Parameter stammt.

Zuerst müssen Sie die folgenden using-Anweisungen hinzufügen.

using ContosoUniversityModelBinding.Models;
using System.Web.ModelBinding;
using System.Data.Entity;

Fügen Sie dann den folgenden Code zu Courses.aspx.cs hinzu:

public IQueryable<Enrollment> coursesGrid_GetData([QueryString] int? studentID)
{
    SchoolContext db = new SchoolContext();
    var query = db.Enrollments.Include(e => e.Course)
        .Where(e => e.StudentID == studentID);
    return query;
}

Das QueryString-Attribut bedeutet, dass dem Parameter in dieser Methode automatisch ein Abfragezeichenfolgenwert namens StudentID zugewiesen wird.

In der Rasteransicht auf Students.aspx fügen Sie ein Linkfeld hinzu, das mit ihrer neuen Kursseite verknüpft ist. Der Link enthält einen Abfragezeichenfolgenwert mit der ID des Kursteilnehmers.

Fügen Sie in Students.aspx das folgende Feld zu den Spalten der Rasteransicht direkt unterhalb des Felds für Gesamtguthaben hinzu.

<asp:TemplateField HeaderText="Total Credits">  
    <ItemTemplate>
        <asp:Label Text="<%# Item.Enrollments.Sum(en => en.Course.Credits) %>" 
            runat="server" />
    </ItemTemplate>
</asp:TemplateField>
<asp:HyperLinkField Text="Courses" DataNavigateUrlFormatString="~/Courses.aspx?StudentID={0}"
    DataNavigateUrlFields="StudentID" />

Führen Sie die Anwendung aus, und beachten Sie, dass die Rasteransicht jetzt den Link Kurse enthält.

Link hinzufügen

Wenn Sie auf einen der Links klicken, werden die registrierten Kurse des Kursteilnehmers angezeigt.

Kurse anzeigen

Zusammenfassung

In diesem Tutorial haben Sie einen Link mit einem Abfragezeichenfolgenwert hinzugefügt. Sie haben diesen Abfragezeichenfolgenwert für den Parameterwert in der select-Methode verwendet.

Im nächsten Tutorial verschieben Sie den Code aus den CodeBehind-Dateien in eine Geschäftslogikebene und eine Datenzugriffsebene.