Eventos
Campeonato mundial de DataViz de Power BI
14 feb, 16 - 31 mar, 16
Con 4 posibilidades de entrar, podrías ganar un paquete de conferencia y convertirlo en el Live Grand Finale en Las Vegas
Saber másEste explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
por Tom Dykstra
La aplicación web de ejemplo de Contoso University muestra cómo crear aplicaciones ASP.NET Web Forms utilizando Entity Framework 4.0 y Visual Studio 2010. Para obtener información sobre la serie de tutoriales, consulte el primer tutorial de la serie
En el tutorial anterior implementó procedimientos almacenados. En este tutorial se muestra cómo la funcionalidad de datos dinámicos puede proporcionar las siguientes ventajas:
Para ver cómo funciona esto, cambiará los controles que usa para mostrar y editar campos en la página Students.aspx existente y agregará metadatos de formato y validación a los campos de nombre y fecha del tipo de entidadStudent
.
Abra la página Students.aspx y, en el control StudentsGridView
, reemplace los elementos Nombre y Fecha de inscripciónTemplateField
por el marcado siguiente:
<asp:TemplateField HeaderText="Name" SortExpression="LastName">
<EditItemTemplate>
<asp:DynamicControl ID="LastNameTextBox" runat="server" DataField="LastName" Mode="Edit" />
<asp:DynamicControl ID="FirstNameTextBox" runat="server" DataField="FirstMidName" Mode="Edit" />
</EditItemTemplate>
<ItemTemplate>
<asp:DynamicControl ID="LastNameLabel" runat="server" DataField="LastName" Mode="ReadOnly" />,
<asp:DynamicControl ID="FirstNameLabel" runat="server" DataField="FirstMidName" Mode="ReadOnly" />
</ItemTemplate>
</asp:TemplateField>
<asp:DynamicField DataField="EnrollmentDate" HeaderText="Enrollment Date" SortExpression="EnrollmentDate" />
Este marcado utiliza controles DynamicControl
en lugar de controles TextBox
y Label
en el campo de plantilla de nombre de alumno y usa un control DynamicField
para la fecha de inscripción. No se especifican cadenas de formato.
Agregue un control ValidationSummary
después del control StudentsGridView
.
<asp:ValidationSummary ID="StudentsValidationSummary" runat="server" ShowSummary="true"
DisplayMode="BulletList" Style="color: Red" />
En el control SearchGridView
, reemplace el marcado de las columnas Nombre y Fecha de inscripción como hizo en el control StudentsGridView
, excepto si se omite el elemento EditItemTemplate
. El elemento Columns
del control SearchGridView
ahora contiene el marcado siguiente:
<asp:TemplateField HeaderText="Name" SortExpression="LastName">
<ItemTemplate>
<asp:DynamicControl ID="LastNameLabel" runat="server" DataField="LastName" Mode="ReadOnly" />,
<asp:DynamicControl ID="FirstNameLabel" runat="server" DataField="FirstMidName" Mode="ReadOnly" />
</ItemTemplate>
</asp:TemplateField>
<asp:DynamicField DataField="EnrollmentDate" HeaderText="Enrollment Date" SortExpression="EnrollmentDate" />
Abra Students.aspx.cs y agregue la siguiente instrucción using
:
using ContosoUniversity.DAL;
Agregue un controlador para el evento Init
de la página:
protected void Page_Init(object sender, EventArgs e)
{
StudentsGridView.EnableDynamicData(typeof(Student));
SearchGridView.EnableDynamicData(typeof(Student));
}
Este código especifica que los datos dinámicos proporcionarán formato y validación en estos controles enlazados a datos para los campos de la entidad Student
. Si recibe un mensaje de error como el ejemplo siguiente al ejecutar la página, normalmente significa que ha olvidado llamar al método EnableDynamicData
en Page_Init
:
Could not determine a MetaTable. A MetaTable could not be determined for the data source 'StudentsEntityDataSource' and one could not be inferred from the request URL.
Ejecute la página.
En la columna Fecha de inscripción, la hora se muestra junto con la fecha porque el tipo de propiedad es DateTime
. Lo corregirá más adelante.
Por ahora, observe que los datos dinámicos proporcionan automáticamente la validación básica de los datos. Por ejemplo, haga clic en Editar, borre el campo de fecha, haga clic en Actualizar y verá que los datos dinámicos hacen que este campo sea obligatorio porque el valor no admite valores NULL en el modelo de datos. La página muestra un asterisco después del campo y un mensaje de error en el control ValidationSummary
:
Puede omitir el control ValidationSummary
, ya que también puede mantener el puntero del mouse sobre el asterisco para ver el mensaje de error:
Los datos dinámicos también validarán que los datos especificados en el campo Fecha de inscripción sean una fecha válida:
Como puede ver, se trata de un mensaje de error genérico. En la sección siguiente verá cómo personalizar los mensajes, así como las reglas de validación y formato.
Normalmente, se quiere personalizar la funcionalidad proporcionada por datos dinámicos. Por ejemplo, puede cambiar cómo se muestran los datos y el contenido de los mensajes de error. También se suelen personalizar las reglas de validación de datos para proporcionar más funciones que las que los datos dinámicos proporcionan automáticamente en función de los tipos de datos. Para ello, cree clases parciales que se correspondan con los tipos de entidad.
En el Explorador de soluciones, haga clic con el botón derecho en el proyecto ContosoUniversity, seleccione Agregar referencia y agregue una referencia a System.ComponentModel.DataAnnotations
.
En la carpeta DAL, cree un nuevo archivo de clase denominado Student.cs y reemplace el código de plantilla con el código siguiente.
using System;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace ContosoUniversity.DAL
{
[MetadataType(typeof(StudentMetadata))]
public partial class Student
{
}
public class StudentMetadata
{
[DisplayFormat(DataFormatString="{0:d}", ApplyFormatInEditMode=true)]
public DateTime EnrollmentDate { get; set; }
[StringLength(25, ErrorMessage = "First name must be 25 characters or less in length.")]
[Required(ErrorMessage="First name is required.")]
public String FirstMidName { get; set; }
[StringLength(25, ErrorMessage = "Last name must be 25 characters or less in length.")]
[Required(ErrorMessage = "Last name is required.")]
public String LastName { get; set; }
}
}
Este código crea una clase parcial para la entidad Student
. El atributo MetadataType
aplicado a esta clase parcial identifica la clase que se usa para especificar metadatos. La clase de metadatos puede tener cualquier nombre, pero se suele usar el nombre de entidad más "Metadatos".
Los atributos aplicados a las propiedades de la clase de metadatos especifican el formato, la validación, las reglas y los mensajes de error. Los atributos que se muestran aquí tendrán los siguientes resultados:
EnrollmentDate
se mostrará como una fecha (sin una hora).Vuelva a ejecutar la página Students.aspx y verá que las fechas se muestran ahora sin horas:
Edite una fila e intente borrar los valores de los campos de nombre. Los asteriscos que indican los errores de campo aparecen en cuanto sale de un campo, antes de hacer clic en Actualizar. Al hacer clic en Actualizar, la página muestra el texto del mensaje de error que ha especificado.
Intente escribir nombres que tienen más de 25 caracteres, haga clic en Actualizar, y la página mostrará el texto del mensaje de error que haya especificado.
Ahora que ha configurado estas reglas de formato y validación en los metadatos del modelo de datos, las reglas se aplicarán automáticamente en todas las páginas que muestren o permitan cambios en estos campos, siempre y cuando use los controles DynamicControl
o DynamicField
. Esto reduce la cantidad de código redundante que hay que escribir, lo que facilita la programación y las pruebas, y garantiza que el formato y la validación de los datos sean coherentes en toda la aplicación.
Aquí concluye esta serie de tutoriales sobre Introducción a Entity Framework. Para obtener más recursos que le ayuden a aprender a usar Entity Framework, continúe con el primer tutorial de la siguiente serie de tutoriales de Entity Framework o visite los sitios siguientes:
Eventos
Campeonato mundial de DataViz de Power BI
14 feb, 16 - 31 mar, 16
Con 4 posibilidades de entrar, podrías ganar un paquete de conferencia y convertirlo en el Live Grand Finale en Las Vegas
Saber másCursos
Módulo
Aprenda a usar DOM, formularios y validación de DOM en una aplicación de Blazor
Certificación
Microsoft Certified: Azure Data Fundamentals - Certifications
Demuestre sus conocimientos de los conceptos básicos de los datos relacionados con los servicios de datos de Microsoft Azure.
Documentación
Introducción a Entity Framework 4.0 Database First y ASP.NET 4 Web Forms: parte 5
En la aplicación web de ejemplo Contoso University se muestra cómo crear aplicaciones ASP.NET Web Forms con Entity Framework. La aplicación de ejemplo es... (Parte 5)
Introducción a Entity Framework 4.0 Database First y ASP.NET 4 Web Forms: parte 6
En la aplicación web de ejemplo Contoso University se muestra cómo crear aplicaciones ASP.NET Web Forms con Entity Framework. La aplicación de ejemplo es... (Parte 6)
Introducción a Entity Framework 4.0 Database First y ASP.NET 4 Web Forms: parte 4
En la aplicación web de ejemplo Contoso University se muestra cómo crear aplicaciones ASP.NET Web Forms con Entity Framework. La aplicación de ejemplo es... (Parte 4)