Używanie wartości ciągu zapytania do filtrowania danych przy użyciu powiązania modelu i formularzy sieci Web

Autor FitzMacken

Ta seria samouczków pokazuje podstawowe aspekty używania powiązania modelu z projektem formularzy sieci Web ASP.NET. Powiązanie modelu sprawia, że interakcje danych są bardziej proste, niż w przypadku obiektów źródła danych (np. ObjectDataSource lub kontrolki SqlDataSource). Ta seria rozpoczyna się od materiału wstępnego i przenosi do bardziej zaawansowanych koncepcji w kolejnych samouczkach.

W tym samouczku pokazano, jak przekazać wartość w ciągu zapytania i użyć tej wartości do pobierania danych za pomocą powiązania modelu.

Ten samouczek jest oparty na projekcie utworzonym w poprzednich częściach serii.

Możesz pobrać kompletny projekt w C# języku lub VB. Kod do pobrania współdziała z programem Visual Studio 2012 lub Visual Studio 2013. Używa szablonu programu Visual Studio 2012, który jest nieco inny niż szablon Visual Studio 2013 przedstawiony w tym samouczku.

Co będziesz kompilować

W tym samouczku przedstawiono następujące instrukcje:

  1. Dodaj nową stronę, aby wyświetlić zarejestrowane kursy dla ucznia
  2. Pobierz zarejestrowane kursy dla wybranego ucznia na podstawie wartości w ciągu zapytania
  3. Dodaj hiperlink z wartością ciągu zapytania z widoku siatki do nowej strony

Kroki opisane w tym samouczku są stosunkowo podobne do tego, co zostało zrobione w poprzednim samouczku , aby odfiltrować wyświetlanych uczniów w oparciu o wybór użytkownika na liście rozwijanej. W tym samouczku użyto atrybutu Control w metodzie SELECT, aby określić, że wartość parametru pochodzi z formantu. W tym samouczku użyjesz atrybutu QueryString w metodzie SELECT, aby określić, że wartość parametru pochodzi z ciągu zapytania.

Dodaj nową stronę do wyświetlania kursów ucznia

Dodaj nowy formularz sieci Web, który używa strony głównej witryny. Master, a następnie nazwij kursystrony.

W pliku kursy. aspx Dodaj widok siatki, aby wyświetlić kursy dla wybranego ucznia.

<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>

Zdefiniuj metodę select

W courses.aspx.cszostanie dodana Metoda SELECT o nazwie określonej we właściwości SelectMethod widoku siatki. W tej metodzie zdefiniujesz zapytanie do pobierania kursów studenta i określisz, że parametr pochodzi z wartości ciągu zapytania o tej samej nazwie co parametr.

Najpierw należy dodać następujące instrukcje using .

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

Następnie Dodaj następujący kod do Courses.aspx.cs:

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;
}

Atrybut QueryString oznacza, że wartość ciągu zapytania o nazwie StudentID jest automatycznie przypisywana do parametru w tej metodzie.

W widoku siatki w programie Students. aspx dodasz pole Hyperlink, które łączy się ze swoją nową stroną kursów. Hiperłącze będzie zawierać wartość ciągu zapytania z identyfikatorem studenta.

W polu Students. aspx Dodaj następujące pole do kolumn w widoku siatki tuż poniżej pola dla łącznej liczby kredytów.

<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" />

Uruchom aplikację i zwróć uwagę, że widok siatki zawiera teraz link kursy.

Dodaj hiperlink

Po kliknięciu jednego z tych linków zobaczysz zarejestrowane kursy tego ucznia.

Pokaż kursy

Podsumowanie

W tym samouczku Dodano łącze z wartością ciągu zapytania. Użyto tej wartości ciągu zapytania dla wartości parametru w metodzie SELECT.

W następnym samouczkukod jest przenoszony z plików związanych z kodem do warstwy logiki biznesowej i warstwy dostępu do danych.