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 di Web Forms 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.

Obiettivo

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 stringa di query dalla visualizzazione griglia alla nuova pagina

I passaggi di questa esercitazione sono abbastanza 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 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 griglia in Students.aspx si aggiungerà un campo collegamento ipertestuale che collega alla nuova pagina Dei corsi. Il collegamento ipertestuale includerà un valore stringa di query con l'ID dello studente.

In Students.aspx aggiungere il campo seguente alle colonne della visualizzazione griglia appena sotto il campo per Total Credits.

<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 si fa clic su uno dei collegamenti, si noterà che i corsi registrati degli studenti.

show courses

Conclusione

In questa esercitazione è stato aggiunto un collegamento con un valore stringa di query. È stato usato il valore della stringa di query per il valore del parametro nel metodo select.

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