2009-08-25 11 views
7

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

+0

Y debe editar el título de su pregunta. No es una pregunta _stupida_ –

+2

"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

+0

La única pregunta estúpida es la que no preguntas. – belugabob

Respuesta

12

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.

+1

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

+0

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

4

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:

+0

¿Podrías dar más detalles? ¿Es similar al archivo de diseñador de winforms? – andrewWinn

+0

@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. –

+0

@jaun, el enlace que ha proporcionado no funciona. – ShaileshDev

1

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.

+0

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

1

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.

0

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.

Cuestiones relacionadas