Recentemente, pretendo tentar implementar a arquitetura MVC no ASP. Alguém deve ter me perguntado: ASP foi eliminado, por que ainda estou estudando? Eu também sei disso. Desde que a Microsoft abandonou o ASP 3.0 e mudou para asp.net, o ASP ficou muito atrás do PHP e JSP, que começaram quase ao mesmo tempo. Os benefícios do código aberto sobre fonte fechada são como PHP e ASP. O ASP diz que será eliminado e ninguém pode salvá -lo. No entanto, vale a pena notar que o ASP é bastante amplo no mercado chinês, especialmente algumas aplicações de algumas pequenas e médias empresas. O CMS simples não é problema e é simples de implantar. Em alguns sistemas antigos do Windows, não requer a instalação do .NET Framework para ser executado diretamente, por isso ainda é necessário preparar uma estrutura. No entanto, essa é uma estrutura experimental, que é apenas para verificar se o ASP pode implementar uma arquitetura MVC semelhante ao PHP.
Ok, depois de dizer tanto, vamos voltar ao assunto. O motivo desse problema é que eu preciso incluir dinamicamente arquivos ASP. Como você sabe, existe apenas um incluindo o método no ASP, ou seja, o SSI (o lado do servidor inclui), que é basicamente dividido nos dois tipos a seguir:
A cópia do código é a seguinte:
<!-#include file = "sample.asp"->
<!-#include virtual = "sample.asp"->
Basicamente, o primeiro para esses dois tipos é mais usado. #include virtual contém caminhos virtuais, que podem ser usados em diretórios virtuais. Mas ambos são estáticos. Se quisermos incluir dinamicamente, não podemos escrever como:
A cópia do código é a seguinte:
<!-#include file = "<%= myvar%>"->
<!-#include virtual = "<%= myvar%>"->
O método de escrita acima está incorreto. Pode -se entender que a Diretiva #include é executada antes do ASP iniciar o mecanismo de script para executar a tag ASP <%>. Em outras palavras, #include não é o trabalho do ASP, mas o programa do lado do servidor, como o trabalho de tradução do IIS, para que você não preste atenção ao seu código ASP.
Como implementar incluir, incluir, incluir_once, requer e requer_once dinamicamente os métodos de script semelhantes ao PHP? Vamos dar uma olhada em um método do objeto ASP Server: Server.Execute. Pesquise todos os recursos do ASP e você pode descobrir que essa função é mais semelhante à dinâmica. Podemos fazer um experimento:
Sample.inc.asp
A cópia do código é a seguinte:
<%
Response.Write "Hello World!"
%>
test.asp
A cópia do código é a seguinte:
<%
Server.execute "sample.inc.asp"
Response.Write "Estou test.asp!"
%>
A saída real deve ser "Hello World! Estou test.asp!", Indicando que o servidor.execute funciona bem em inclusão dinâmica, mas e se eu quiser incluir classes ou funções? Em seguida, faça o seguinte experimento:
Sample.class.asp
A cópia do código é a seguinte:
<%
Amostra de classe
Classe final
%>
test.asp
A cópia do código é a seguinte:
<%
Server.execute "sample.class.asp"
Response.Write Typename (Eval ("New Sample")))
%>
Executar diretamente, o erro "Microsoft VBScript Runttime Error '800A01fa' não está definido: 'Sample'", o resultado é muito decepcionante, por que isso acontece? Procurei MSDN e encontrei esta descrição: "Se um arquivo estiver incluído na página de chamada usando #include, o .asp executado não o usará. Por exemplo, você pode ter uma sub -rotina em um arquivo incluído na sua página de chamada, mas o .asp executado não reconhecerá o nome da sub -rotina". Parece ser um pouco diferente do problema que encontrei. Server.execute o código isolado? Em seguida, execute o seguinte experimento: