Condividi tramite


Uso dei valori di stringa di query per filtrare i dati con l'associazione di modelli e i Web form

di Tom FitzMacken

Questa serie di esercitazioni illustra gli aspetti di base dell'uso dell'associazione di modelli con un progetto Web Form ASP.NET. L'associazione di modelli rende l'interazione dei dati più semplice rispetto alla gestione di oggetti origine dati, ad esempio ObjectDataSource o SqlDataSource. Questa serie inizia con materiale introduttivo e passa a concetti più avanzati nelle esercitazioni successive.

Questa esercitazione illustra come passare un valore nella stringa di query e usarlo per recuperare i dati tramite l'associazione di modelli.

Questa esercitazione si basa sul progetto creato nelle parti precedenti della serie.

È possibile scaricare il progetto completo in C# o VB. Il codice scaricabile funziona con Visual Studio 2012 o Visual Studio 2013. Usa il modello di Visual Studio 2012, leggermente diverso dal modello di Visual Studio 2013 illustrato in questa esercitazione.

Cosa costruirai

In questa esercitazione si apprenderà come:

  1. Aggiungere una nuova pagina per visualizzare i corsi registrati per uno studente
  2. Recuperare i corsi registrati per lo studente selezionato in base a un valore nella stringa di query
  3. Aggiungere un collegamento ipertestuale con un valore di stringa di query dalla griglia di visualizzazione alla nuova pagina

I passaggi di questa esercitazione sono piuttosto simili a quanto fatto nell'esercitazione precedente per filtrare gli studenti visualizzati in base alla selezione dell'utente in un elenco a discesa. In questa esercitazione è stato usato l'attributo Control nel metodo select per specificare che il valore del parametro proviene da un controllo . In questa esercitazione si userà l'attributo QueryString nel metodo select per specificare che il valore del parametro proviene dalla stringa di query.

Aggiungere una nuova pagina per visualizzare i corsi di uno studente

Aggiungere un nuovo modulo Web che usa la pagina master Site.master e denominare la pagina Corsi.

Nel file Courses.aspx aggiungere una visualizzazione griglia per visualizzare i corsi per lo studente selezionato.

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

Definire il metodo select

In Courses.aspx.cs si aggiungerà il metodo select con il nome specificato nella proprietà SelectMethod della visualizzazione griglia. In questo metodo si definirà la query per recuperare i corsi di uno studente e si specifica che il parametro proviene da un valore della stringa di query con lo stesso nome del parametro .

Prima di tutto, è necessario aggiungere le istruzioni using seguenti.

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

Aggiungere quindi il codice seguente a 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;
}

L'attributo QueryString indica che un valore della stringa di query denominato StudentID viene assegnato automaticamente al parametro in questo metodo.

Nella visualizzazione a griglia in Students.aspx, aggiungerai un campo collegamento ipertestuale che colleghi alla tua nuova pagina Corsi. Il collegamento ipertestuale includerà un valore della stringa di query con l'ID dello studente.

In Students.aspx, aggiungere il campo seguente alle colonne della vista griglia appena sotto il campo per Crediti Totali.

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

Eseguire l'applicazione e notare che la visualizzazione griglia include ora il collegamento Corsi.

Aggiungi collegamento ipertestuale

Quando fai clic su uno dei collegamenti, vedrai i corsi a cui lo studente è iscritto.

mostra corsi

Conclusione

In questa esercitazione è stato aggiunto un collegamento con un valore di stringa di query. Hai usato quel valore della stringa di interrogazione come valore del parametro nel metodo select.

Nell'esercitazione successiva si sposterà il codice dai file code-behind in un livello di logica di business e un livello di accesso ai dati.