Sdílet prostřednictvím


Použití hodnot řetězce dotazu k filtrování dat pomocí vazby modelu a webových formulářů

, autor: Tom FitzMacken

Tato série kurzů ukazuje základní aspekty použití vazby modelu s projektem ASP.NET Web Forms. Díky vazbě modelu je interakce dat jednodušší než práce s objekty zdroje dat (například ObjectDataSource nebo SqlDataSource). Tato série začíná úvodním materiálem a v dalších kurzech se přesune k pokročilejším konceptům.

V tomto kurzu se dozvíte, jak předat hodnotu v řetězci dotazu a použít ji k načtení dat prostřednictvím vazby modelu.

Tento kurz vychází z projektu vytvořeného v dřívějších částech série.

Celý projekt si můžete stáhnout v jazyce C# nebo VB. Kód ke stažení funguje se sadou Visual Studio 2012 nebo Visual Studio 2013. Používá šablonu sady Visual Studio 2012, která se mírně liší od šablony Visual Studio 2013 uvedené v tomto kurzu.

Co vytvoříte

V tomto kurzu provedete následující:

  1. Přidání nové stránky pro zobrazení zaregistrovaných kurzů pro studenta
  2. Načtení zaregistrovaných kurzů pro vybraného studenta na základě hodnoty v řetězci dotazu
  3. Přidání hypertextového odkazu s hodnotou řetězce dotazu ze zobrazení mřížky na novou stránku

Kroky v tomto kurzu se dost podobají krokům, které jste provedli v předchozím kurzu k filtrování zobrazených studentů na základě výběru uživatele v rozevíracím seznamu. V tomto kurzu jste pomocí atributu Control v metodě select určili, že hodnota parametru pochází z ovládacího prvku. V tomto kurzu použijete atribut QueryString v metodě select k určení, že hodnota parametru pochází z řetězce dotazu.

Přidání nové stránky pro zobrazení studentských kurzů

Přidejte nový webový formulář, který používá stránku Site.master master, a pojmenujte stránku Kurzy.

V souboru Courses.aspx přidejte zobrazení mřížky, které zobrazí kurzy pro vybraného studenta.

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

Definování metody select

V courses.aspx.cs přidáte metodu select s názvem, který jste zadali ve vlastnosti SelectMethod zobrazení mřížky. V této metodě definujete dotaz pro načtení kurzů studenta a určíte, že parametr pochází z hodnoty řetězce dotazu se stejným názvem jako parametr.

Nejprve musíte přidat následující příkazy using .

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

Pak do souboru Courses.aspx.cs přidejte následující kód:

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

Atribut QueryString znamená, že hodnota řetězce dotazu s názvem StudentID je automaticky přiřazena parametru v této metodě.

V zobrazení mřížky na webu Students.aspx přidáte pole hypertextového odkazu, které odkazuje na novou stránku Kurzy. Hypertextový odkaz bude obsahovat hodnotu řetězce dotazu s ID studenta.

V souboru Students.aspx přidejte následující pole do sloupců zobrazení mřížky přímo pod polem Pro celkový počet kreditů.

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

Spusťte aplikaci a všimněte si, že zobrazení mřížky teď obsahuje odkaz Kurzy.

Přidat hypertextový odkaz

Když kliknete na jeden z odkazů, uvidíte zaregistrované kurzy daného studenta.

zobrazit kurzy

Závěr

V tomto kurzu jste přidali odkaz s hodnotou řetězce dotazu. Tuto hodnotu řetězce dotazu jste použili pro hodnotu parametru v metodě select.

V dalším kurzu přesunete kód ze souborů kódu na pozadí do vrstvy obchodní logiky a vrstvy přístupu k datům.