¿Por qué el código está detrás de una clase parcial para páginas aspx?¿Por qué los archivos aspx de código subyacente se declaran como clases parciales?
Respuesta
os remito a esta MSDN Page (página ASP.NET clase general).
Cuando se compila la página, ASP.NET genera una clase parcial basado en el archivo .aspx ; esta clase es una clase parcial del archivo de clase de código subyacente. El archivo de clase parcial generado contiene declaraciones para los controles de la página. Esta clase parcial habilita su archivo de código subyacente para ser utilizado como parte de una clase completa sin que requiere que declare explícitamente los controles .
Ver esta tabla:
alt text http://img30.imageshack.us/img30/7692/msdnchart.gif
esta manera usted tiene una clase que contiene la lógica y una clase que contiene cosas de diseño. En tiempo de compilación, se genera como un todo.
Este es uno de esos gráficos de "vamos a hacer un gráfico de algo que no debería ser un gráfico". – womp
"El modelo de herencia de las páginas con código subyacente es un poco más complejo que el de las páginas de un solo archivo" La sección en ese artículo de MSDN fue muy útil para comprender mejor esta tabla –
Debido a que hay otras partes de la clase (cosas de diseño) que se esconde del desarrollador
Por ejemplo, en lugar de este
public MyBasePage : System.Web.UI.Page
{
...
protected System.Web.UI.Label lblName;
protected void Page_Load(object sender, EventArgs e)
{
}
...
}
ASP.NET crea esas declaraciones en diferentes archivos físicos, dejando este
public partial class MyBasePage : System.Web.UI.Page
{
...
protected void Page_Load(object sender, EventArgs e)
{
}
...
}
Más información:
¿Podrías dar más detalles? ¿Es similar al archivo de diseñador de winforms? – andrewWinn
@andrewWinn - sí, es equivalente al archivo de diseñador de winforms - en ASP.NET 1.1 habría todas las declaraciones de control en la parte superior de su código subyacente, y luego una región contraída en la parte inferior comentó a lo largo de las líneas de " Designer Generated, Do Not Modify "donde se conectaron todos los eventos. –
@jaun, el enlace que ha proporcionado no funciona. – ShaileshDev
La declaración parcial le permite escribir código en otros archivos; simplemente colóquelo en el mismo espacio de nombres y asigne un nombre a la clase, y se tratarán como si estuvieran en el mismo archivo. Es genial para agregar funcionalidad a los archivos generados. Lo uso con más frecuencia para agregar funciones/propiedades a mis objetos LinqToSql.
Además, ayuda a mantener todo el código generado feo lejos de ti y accidentalmente editándolo. Tienes que ser mucho más decidido ahora para editarlo ... :) – klabranche
La otra razón para los archivos parciales es manejar el caso donde una herramienta genera parte de la definición de clase (y puede ser regenerada en algún momento) y el resto de la clase es implementada por usted.
En tales casos, si no se utiliza una clase parcial, se sobrescribirá el código o si el proceso de generación tendrá dificultades para realizar su trabajo (si puede hacerlo).
Con las clases parciales en su lugar, el código generado se puede regenerar fácilmente sin tocar su código.
Otro buen ejemplo de esto es cuando se utilizan las clases DataContext para LINQ-to-SQL: las cosas realmente inteligentes se generan en un conjunto de archivos de clase parciales y puede proporcionar implementaciones para validación, etc. en el otro parcial clase, seguro sabiendo que la re-generación no destruirá su trabajo.
Aspx.cs usa la clase PARTIAL porque los controles (por ejemplo, TextBox, GridView) a los que se accede en esta clase se declaran en el archivo .Aspx (es decir,Físicamente otro archivo), por lo que una clase contiene la declaración de control (archivo .aspx) y otra lógica empresarial basada en los controles declarados en el archivo .aspx. cuando se compilan, se considera una sola clase.
- 1. Obtenga el VS2008 en clases parciales "de guiones de árbol" (como archivos de código subyacente)
- 2. Algunos controles aspx no se reconocen en los archivos de código subyacente
- 3. Visual Studio - ¿Por qué los archivos .ASPX tardan mucho más en cargarse que los archivos .ASPX.CS?
- 4. clases parciales de Java
- 5. clases Adelante declaran en espacios de nombres
- 6. Clases parciales de WinForm
- 7. clases parciales + DataAnnotations
- 8. ¿Cuál es el propósito de las clases parciales?
- 9. Depuración de clases parciales
- 10. Por qué se declaran variables de objeto con una estrella
- 11. ¿por qué las constantes de Java se declaran estáticas?
- 12. ¿Por qué declarar las clases Mapper y Reducer como estáticas?
- 13. ¿Por qué las propiedades de Dependencia se declaran como estáticas de solo lectura?
- 14. C# Clases parciales
- 15. ¿Por qué los métodos parciales deben ser anulados?
- 16. Clases parciales en C#
- 17. Uso de clases parciales
- 18. Clases parciales en proyectos
- 19. asp.net: clases parciales y herencia
- 20. ¿Por qué coffeescript genera clases como esta?
- 21. Error con C# Clases parciales
- 22. ¿Cómo llamar a un método de código subyacente desde la página aspx?
- 23. ¿Por qué los archivos de código subyacente no están visibles en un proyecto de aplicación web de VB.NET?
- 24. Creando clases parciales en C#
- 25. ¿Cómo convertir automáticamente clases VS2003 a archivos Designer.cs parciales?
- 26. xsd.exe para generar clases como archivos separados?
- 27. ¿Por qué los tipos de parámetros se declaran fuera del paréntesis?
- 28. ¿Por qué los métodos de interfaz C# no se declaran abstractos o virtuales?
- 29. .NET clases parciales frente a la herencia
- 30. ¿Cómo borrar todos los campos de formulario de código subyacente?
Y debe editar el título de su pregunta. No es una pregunta _stupida_ –
"No hay preguntas estúpidas, solo personas estúpidas" - Sr. Garrison, South Park. OK, entonces eso no aplica aquí, solo me gusta esa cita. : D – Powerlord
La única pregunta estúpida es la que no preguntas. – belugabob