Récemment, je prévois d'essayer de mettre en œuvre l'architecture MVC dans ASP. Quelqu'un doit m'avoir demandé: ASP a été éliminé, pourquoi je l'étudie toujours? Je le sais aussi. Depuis que Microsoft a abandonné ASP 3.0 et est passé à ASP.NET, ASP a été éloigné loin derrière PHP et JSP qui a commencé presque en même temps qu'il. Les avantages de l'open source sur une source fermée sont comme PHP et ASP. ASP dit qu'il sera éliminé et que personne ne peut le sauver. Cependant, il convient de noter que l'ASP est assez large sur le marché chinois, en particulier certaines applications de certaines petites et moyennes entreprises. CMS simple n'est pas un problème et il est simple à déployer. Sur certains anciens systèmes Windows, il ne nécessite pas l'installation de .NET Framework pour s'exécuter directement, il est donc toujours nécessaire de préparer un cadre. Cependant, il s'agit d'un cadre expérimental, qui est simplement de vérifier si ASP peut implémenter une architecture MVC similaire à PHP.
D'accord, après en dire autant, tournons-nous simplement vers le sujet. La raison de ce problème est que je dois inclure dynamiquement les fichiers ASP. Comme vous le savez, il n'y a qu'une seule méthode inclue dans ASP, c'est-à-dire SSI (côté serveur inclue), qui est essentiellement divisé en les deux types suivants:
La copie de code est la suivante:
<! - #include file = "sampe.asp" ->
<! - #include virtual = "sampe.asp" ->
Fondamentalement, le premier pour ces deux types est plus utilisé. #include virtuel contient des chemins virtuels, qui peuvent être utilisés dans les répertoires virtuels. Mais ces deux sont statiques. Si nous voulons inclure dynamiquement, nous ne pouvons pas l'écrire comme:
La copie de code est la suivante:
<! - #include file = "<% = myvar%>" ->
<! - #include virtual = "<% = myvar%>" ->
La méthode d'écriture ci-dessus est incorrecte. On peut comprendre que la directive #include est exécutée avant que l'ASP commence le moteur de script pour exécuter la balise ASP <% %>. En d'autres termes, #include n'est pas le travail d'ASP, mais le programme côté serveur, tel que le travail de traduction de l'IIS, vous ne prêterez donc pas attention à votre code ASP.
Comment implémenter inclure, inclure_once, require et require_once inclure dynamiquement des méthodes de script similaires à PHP? Jetons un coup d'œil à une méthode d'objet ASP Server: server.exécute. Recherchez toutes les fonctionnalités ASP et vous pouvez constater que cette fonction est la plus similaire à Dynamic Inclure. Nous pouvons faire une expérience:
Sample.inc.asp
La copie de code est la suivante:
<%
Response.Write "Hello World!"
%>
test.asp
La copie de code est la suivante:
<%
Server.exécute "samptère.inc.asp"
Response.write "Je suis test.asp!"
%>
La sortie réelle devrait être "Hello World! Je suis test.asp!", Indiquant que Server.Exécute fonctionne bien dans l'inclusion dynamique, mais que se passe-t-il si je veux inclure des classes ou des fonctions? Ensuite, faites l'expérience suivante:
Sample.class.asp
La copie de code est la suivante:
<%
Échantillon de classe
Classe finale
%>
test.asp
La copie de code est la suivante:
<%
Server.exécute "samptère.class.asp"
Response.Write typename (EVAL ("nouvel échantillon"))
%>
Exécuter directement, l'erreur "Microsoft VBScript Runtime Error Error '800A01FA' Class n'est pas définie:" Exemple "", le résultat est très décevant, pourquoi cela se produit-il? J'ai recherché MSDN et trouvé cette description: "Si un fichier est inclus dans la page d'appel en utilisant #include, le .asp exécuté ne l'utilisera pas. Par exemple, vous pouvez avoir un sous-programme dans un fichier inclus dans votre page d'appel, mais le .asp exécuté ne reconnaîtra pas le nom de sous-programme." Cela semble être un peu différent du problème que j'ai rencontré. Server.Exécute est-il isolé du code? Ensuite, effectuez l'expérience suivante: