Recientemente, planeo tratar de implementar la arquitectura MVC en ASP. Alguien debe haberme preguntado: ASP ha sido eliminado, ¿por qué todavía lo estoy estudiando? También sé esto. Desde que Microsoft abandonó ASP 3.0 y cambió a ASP.NET, ASP se ha quedado muy detrás de PHP y JSP que comenzaron casi al mismo tiempo. Los beneficios de la fuente abierta sobre la fuente cerrada son como PHP y ASP. ASP dice que será eliminado y que nadie puede guardarlo. Sin embargo, vale la pena señalar que ASP es bastante amplio en el mercado chino, especialmente algunas aplicaciones de algunas empresas pequeñas y medianas. CMS simple no es un problema y es simple de implementar. En algunos sistemas antiguos de Windows, no requiere la instalación de .NET Framework para ejecutarse directamente, por lo que aún es necesario preparar un marco. Sin embargo, este es un marco experimental, que es solo para verificar si ASP puede implementar una arquitectura MVC similar a PHP.
De acuerdo, después de decir tanto, pasemos al tema. La razón de este problema es que necesito incluir dinámicamente archivos ASP. Como saben, solo hay un método de inclusión en ASP, es decir, SSI (el lado del servidor incluye), que básicamente se divide en los siguientes dos tipos:
La copia del código es la siguiente:
<!-#include file = "sample.asp"->
<!-#include virtual = "sample.asp"->
Básicamente, el primero para estos dos tipos se usa más. #Include Virtual contiene rutas virtuales, que pueden usarse en directorios virtuales. Pero ambos son estáticos. Si queremos incluir dinámicamente, no podemos escribirlo como:
La copia del código es la siguiente:
<!-#include file = "<%= myvar%>"->
<!-#include virtual = "<%= myvar%>"->
El método de escritura anterior es incorrecto. Se puede entender que la Directiva #Clude se ejecuta antes de que el ASP inicie el motor de script para ejecutar la etiqueta ASP < % %>. En otras palabras, #include no es el trabajo de ASP, sino el programa del lado del servidor, como el trabajo de traducción de IIS, por lo que no prestará atención a su código ASP.
¿Cómo implementar incluir, incluir_once, requerir e require_once incluir dinámicamente métodos de script similares a PHP? Echemos un vistazo a un método de objeto de servidor ASP: server.execute. Busque todas las características de ASP y puede encontrar que esta función es más similar a la inclusión dinámica. Podemos hacer un experimento:
Muestra.inc.asp
La copia del código es la siguiente:
<%
Respuesta. Escribe "¡Hola mundo!"
%>
test.asp
La copia del código es la siguiente:
<%
Servidor.execute "sample.inc.asp"
Response.write "¡Soy Test.asp!"
%>
La salida real debe ser "¡Hola Mundo! ¡Soy Test.asp!", Lo que indica que ser servidor.ExCute funciona bien en la inclusión dinámica, pero ¿qué pasa si quiero incluir clases o funciones? A continuación, haga el siguiente experimento:
Sample.class.asp
La copia del código es la siguiente:
<%
Muestra de clase
Clase final
%>
test.asp
La copia del código es la siguiente:
<%
Servidor.execute "sample.class.asp"
Response.Write Typename (eval ("nueva muestra"))
%>
Ejecute directamente, el error "Microsoft VBScript Error de tiempo de ejecución de tiempo '800A01FA' no está definido: 'muestra', el resultado es muy decepcionante, ¿por qué sucede esto? Busqué MSDN y encontré esta descripción: "Si se incluye un archivo en la página de llamadas usando #Include, el ejecutado .asp no lo usará. Por ejemplo, es posible que tenga una subrutina en un archivo que se incluya en su página de llamadas, pero el Ejecutado .asp no reconocerá el nombre de la subrutina". Parece ser un poco diferente del problema que encontré. ¿Está aislado en código de server.ExCute? Luego realice el siguiente experimento: