Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
por Tom FitzMacken
En esta serie de tutoriales se muestran aspectos básicos del uso del enlace de modelos con un proyecto de web Forms de ASP.NET. El enlace de modelos hace que la interacción de datos sea más sencilla que tratar con objetos de origen de datos (como ObjectDataSource o SqlDataSource). Esta serie comienza con material introductorio y pasa a conceptos más avanzados en tutoriales posteriores.
En este tutorial se muestra cómo pasar un valor en la cadena de consulta y usar ese valor para recuperar datos a través del enlace de modelos.
Este tutorial se basa en el proyecto creado en las partes anteriores de la serie.
Puede descargar el proyecto completo en C# o VB. El código descargable funciona con Visual Studio 2012 o Visual Studio 2013. Usa la plantilla de Visual Studio 2012, que es ligeramente diferente de la plantilla de Visual Studio 2013 que se muestra en este tutorial.
Lo que vas a desarrollar
En este tutorial, hará lo siguiente:
- Agregar una nueva página para mostrar los cursos inscritos para un alumno
- Recuperar los cursos inscritos para el alumno seleccionado en función de un valor de la cadena de consulta
- Agregar un hipervínculo con un valor de cadena de consulta desde la vista de cuadrícula a la nueva página
Los pasos de este tutorial son bastante similares a lo que hizo en el tutorial anterior para filtrar los alumnos mostrados en función de la selección de usuario en una lista desplegable. En ese tutorial, ha usado el atributo Control en el método select para especificar que el valor del parámetro procede de un control . En este tutorial, usará el atributo QueryString en el método select para especificar que el valor del parámetro procede de la cadena de consulta.
Agregar nueva página para mostrar los cursos de un alumno
Agregue un nuevo formulario web que use la página maestra Site.master y asigne un nombre a la página Courses.
En el archivo Courses.aspx , agregue una vista de cuadrícula para mostrar los cursos del alumno seleccionado.
<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>
Definición del método select
En Courses.aspx.cs, añadirás el método de selección con el nombre especificado en la propiedad SelectMethod del GridView. En ese método, definirá la consulta para recuperar los cursos de un alumno y especificará que el parámetro procede de un valor de cadena de consulta con el mismo nombre que el parámetro .
En primer lugar, debe agregar las siguientes declaraciones using.
using ContosoUniversityModelBinding.Models;
using System.Web.ModelBinding;
using System.Data.Entity;
A continuación, agregue el código siguiente 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;
}
El atributo QueryString significa que un valor de cadena de consulta denominado StudentID se asigna automáticamente al parámetro en este método.
Añadir un hipervínculo con un valor de cadena de consulta
En la vista de cuadrícula de Students.aspx, agregará un campo de hipervínculo que se vincule a su nueva página de Cursos. El hipervínculo incluirá un valor de cadena de consulta con el identificador del alumno.
En Students.aspx, agregue el siguiente campo a las columnas de vista de cuadrícula justo debajo del campo Créditos totales.
<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" />
Ejecute la aplicación y observe que la vista de cuadrícula ahora incluye el vínculo Cursos.
Al hacer clic en uno de los vínculos, verá los cursos en los que el alumno está inscrito.
Conclusión
En este tutorial, ha agregado un enlace con un valor de cadena de consulta. Usaste ese valor de la cadena de consulta como el valor para el parámetro en el método select.
En el siguiente tutorial, moverá el código de los archivos de código subyacente a una capa de lógica de negocios y a una capa de acceso a datos.