¿Cómo se compilan los archivos .aspx y aspx.cs? ¿Serán dos ensamblajes o ambos estos archivos combinados uno y se crearán como un ensamblaje? ¿Alguna jerarquía/herencia sigue? .aspx se está creando como un archivo de código C# correspondiente (solo entonces podríamos crear un ensamblado ¿correcto? ¿corregirme si estoy equivocado?) como uno en el archivo de windows form designer.cs?¿Cómo se está compilando aspx?
Respuesta
Depende del tipo de proyecto. Con ASP .Net puede crear dos tipos de proyectos: Web Application Project and Web Site Project..
¿Cómo se está compilando el archivo .aspx y aspx.cs?
Con Web Application
proyecto se compila el código detrás de los aspx
archivos, controles de usuario y otro código que se encuentra en este proyecto en un solo archivo DLL y desplegarlo en el servidor.
Con Web Site Project
, simplemente copie el código fuente en el servidor y ASP .Net
se encargará de la compilación. El proyecto de sitio web contiene el código fuente de clases personalizadas en la carpeta App_Code (deberá leer más sobre esto en ese enlace)
¿Serán dos conjuntos o estos dos archivos combinados uno y se crearán como uno ¿montaje?
En ninguno de estos casos, el código encontrado en los archivos aspx, ascx
no es compilado por usted (usando Visual Studio, etc.). ASP .Net
analiza estos archivos y crea un dll almacenado en su carpeta temporal. Los dlls "aspx, ascx" (aunque puede ser más que uno) son archivos diferentes a los creados por usted con Visual Studio (y creo que es diferente de la creada en la carpeta App_Code, ya que ese código no puede código de acceso encontrado en las páginas).
¿Alguna jerarquía/herencia sigue?
Sí. Cuando una página se analiza y se compila, esa clase generada heredará la que se llama en el atributo "Inherits", que se encuentra en la directiva @Page.
<%@ Page Language="C#" CodeBehind="Default.aspx.cs"
Inherits="WebApplication1._Default" %>
ASP .Net análisis sintáctico de archivo Default.aspx y genera una clase que hereda WebApplication1._Default
public class default_aspx : global::WebApplication1._Default
{
}
dándose la circunstancia de que la clase generada a partir de marcado hereda una clase escrita por nosotros (por lo general el de la código detrás, el archivo aspx.cs
), somos libres de utilizar sus miembros o métodos.
El siguiente método es un método de la clase _Default:
protected string ToUpper(string source)
{
return source.ToUpper();
}
A continuación, en el marcado podemos llamar:
<form id="form1" runat="server">
<%= ToUpper("Microsoft") %>
</form>
Podemos incluso escribir en el marcado algo como:
<% SomeValue = 1; %>
<%= SomeValue %>
Donde SomeValue es al menos una propiedad protegida de la clase _Default.
Somos libres para declarar miembros y escribir código de servidor en el marcado también:
<head runat="server">
<script runat="server" language="C#">
private int someCounter = 10;
</script>
</head>
<body>
<% for (var i = 0; i < someCounter; i++)
{ %>
<p>
Paragraph number:<%= i %>
</p>
<% } %>
</body>
</html>
Aquí declaro un campo someCounter
y lo uso para escribir 10 párrafos. Por supuesto, esta no es la forma recomendada de hacer tales cosas. Como someCounter
es miembro de la clase generada, no se puede acceder a este en el código subyacente.
Hay otra ventaja enorme (y más real) de esta arquitectura. Supongamos que algunas páginas del sitio web son amables estáticas (about.aspx, privacy.aspx, etc.) y usan la misma página maestra. El código detrás de esta página no cambia. Esto significa que podemos crear otras páginas y desplegarlas sin hacer otra compilación del código subyacente (este aspecto se aplica a los proyectos de aplicaciones web). Además, antes de comenzar, podríamos permitir que solo una persona vea estas páginas. Así que para lograr esto creamos una clase PreviewPage
public PreviewPage: System.Web.Page
{
public PreviewPage()
{
this.Load += (o, e) => {
// code here to see if the authenticated user has the right to see the page
// if not, redirect the user to another page
}
}
}
y cambiar el valor Inherits
:
<%@ Page Language="C#" Inherits="WebApplication1.PreviewPage" %>
aspx se crea como un archivo de código correspondiente C#
El atributo Language
en el La directiva @Page
dicta qué idioma se utiliza para compilar el archivo aspx/ascx
. Así que puedes usar VB.Net en el archivo aspx y compilar el sitio web con el compilador C#.
Esta es otra compilación, diferente a la que Visual Studio hace, está hecha con diferentes opciones. Esta es la razón por la cual en web.config hay opciones para configurar el compilationMode
en Debug/Release
y también para indicar al compilador que use las otras opciones disponibles.
Cuando una página se analiza y se compila, esa clase generada heredará un nombre -> ¿clase generada significa clase aspx/ascx? – deen
Quería decir "named at Inherits". Lo siento, como pueden ver, el inglés no es mi lengua materna y tengo mucho que aprender para deletrear/escribir. Agregué un ejemplo –
- 1. Determinar si se está compilando en Windows u otro sistema
- 2. CommonCrypto no está compilando para arch armv7 iOS
- 3. omp for with collapse clause no está compilando
- 4. Compilando php con curl, ¿dónde está curl instalado?
- 5. Cómo minificar las páginas aspx
- 6. ¿Compilando Clojure?
- 7. Determinación del carácter Newline para el entorno Se está compilando un programa C++ en
- 8. compilando su propio glibc
- 9. No se puede depurar Razor helper: parece que IIS no está compilando símbolos de depuración.
- 10. ¿por qué este código no se está compilando con javac pero no tiene errores en eclipse?
- 11. compilando OpenSSH para iPhone?
- 12. Compilando pHash para iOS
- 13. f # compilando demasiado lento
- 14. DbContext no compilando?
- 15. Omitiendo Bibliotecas Incompatibles compilando
- 16. compilando estáticamente QWebKit 4.6.2
- 17. Compilando y ejecutando ApiDemos
- 18. simpLESS no compilando
- 19. ¿Cómo se ejecuta la prueba unitaria en IntelliJ cuando algunos módulos no se están compilando?
- 20. descarga wget aspx página
- 21. Puntos de interrupción páginas aspx
- 22. heredando las páginas .aspx?
- 23. ¿Cómo mostrar un ASPX en otro DIV de ASPX dinámicamente en tiempo de ejecución?
- 24. IIS recién instalado. No se muestra la página de Aspx
- 25. compilando con c89 y c99 ¿gcc 4.4.2 está por defecto en c99?
- 26. compilando en Windows y Linux
- 27. compilando fftw3 en android ndk
- 28. compilando libqxt en mac osx
- 29. iis retraso de inicio con páginas aspx
- 30. Compilando CUDA con Visual Studio 2010
Realmente no entiendo la pregunta, pero tal vez este http://odetocode.com/code/417.aspx y este http://msdn.microsoft.com/en-us/library/015103yb(v= vs.71) .aspx ayudará. –