Partilhar via


Utilização de valores de cadeias de consulta para filtrar dados com associação de modelos e formulários da web

por Tom FitzMacken

Esta série de tutoriais demonstra aspetos básicos da utilização de binding de modelos num projeto ASP.NET Web Forms. A ligação de modelos torna a interação de dados mais simples do que lidar com objetos fonte de dados (como ObjectDataSource ou SqlDataSource). Esta série começa com material introdutório e avança para conceitos mais avançados em tutoriais posteriores.

Este tutorial mostra como passar um valor na cadeia de consulta e usar esse valor para recuperar dados através da ligação de modelos.

Este tutorial baseia-se no projeto criado nas primeiras partes da série.

Podes descarregar o projeto completo em C# ou VB. O código descarregável funciona com Visual Studio 2012 ou Visual Studio 2013. Utiliza o modelo Visual Studio 2012, que é ligeiramente diferente do modelo Visual Studio 2013 mostrado neste tutorial.

O que vais construir

Neste tutorial, você:

  1. Adicione uma nova página para mostrar os cursos inscritos para um estudante
  2. Recuperar os cursos inscritos para o estudante selecionado com base num valor na cadeia de consulta
  3. Adicione um hiperlink com um valor de string de consulta da vista da grelha para a nova página

Os passos deste tutorial são bastante semelhantes aos que fizeste no tutorial anterior para filtrar os alunos apresentados com base na seleção do utilizador numa lista suspensa. Nesse tutorial, usaste o atributo Control no método select para especificar que o valor do parâmetro vem de um controlo. Neste tutorial, vais usar o atributo QueryString no método select para especificar que o valor do parâmetro vem da query string.

Adicionar nova página para mostrar os cursos de um aluno

Adicione um novo formulário web que utilize a página principal Site.master e nomeie a página como Cursos.

No ficheiro Courses.aspx , adicione uma vista em grelha para mostrar os cursos do aluno selecionado.

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

Defina o método selecionar

No Courses.aspx.cs, irá adicionar o método 'select' com o nome que especificou na propriedade SelectMethod da grelha de visualização. Nesse método, vais definir a consulta para recuperar os cursos de um aluno e especificar que o parâmetro vem de um valor de cadeia de consulta com o mesmo nome do parâmetro.

Primeiro, deve adicionar as seguintes declarações using.

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

Depois, adicione o seguinte código à 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;
}

O atributo QueryString significa que um valor de string de consulta chamado StudentID é automaticamente atribuído ao parâmetro neste método.

Na vista em grelha do Students.aspx, irá adicionar um campo de hiperligação que liga à sua nova página de Cursos. O hiperlink incluirá um valor de string de consulta com o id do aluno.

Em Students.aspx, adicione o campo seguinte às colunas da vista em grelha logo abaixo do campo para Créditos Totais.

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

Execute a aplicação e repare que a vista de grelha agora inclui o link Cursos.

Adicionar hiperligação

Quando clicar num dos links, verá os cursos inscritos desse aluno.

mostrar cursos

Conclusion

Neste tutorial, adicionaste um link com um valor de string de consulta. Usaste esse valor da cadeia de consulta para o valor do parâmetro no método select.

No próximo tutorial, irá mover o código dos ficheiros code-behind para uma camada de lógica empresarial e uma camada de acesso a dados.