8 votes

Passage d'un paramètre par server.execute ?

Il est possible de passer un paramètre à travers server.execute ?

Fx. J'ai dans mon site.asp un scénario IF où j'ai besoin functions.asp?a=something&id=123 exécuté. Est-ce possible ?

Sur le site.asp :

dim id
id = 123

if b = "hi" then
  server.execute("functions.asp?a=something&id=" & id)
else
  response.write("No way dude")
end if

Sur fonctions.asp

a = request.querystring("a")
id = request.querystring("id")

if a = "something" and cint(id) > 100 then
  response.write("Yes way dude")
else
  response.write("No way dude")
end if

5voto

Shadow Wizard Points 38568

Vous ne pouvez pas utiliser la chaîne de requête dans le champ Server.Execute c'est clairement mentionné dans le documentation officielle .

Ce que vous pouvez faire est bien mieux : vous pouvez accéder directement à la variable id défini dans site.asp à l'intérieur de functions.asp et vous pouvez également déclarer et définir une autre variable, a :

~~-site.asp :

dim id, a
id = 123
a = "something"
server.execute("functions.asp")

--fonctions.asp

if a = "something" and cint(id) > 100 then
    response.write("Yes way dude")
else  
    response.write("No way dude")
end if~~ 

Comme il crée un tout nouvel "environnement de script", le fichier exécuté n'aura pas accès aux propriétés, méthodes ou variables du code appelant, mais seulement aux paramètres globaux de la requête, à la session, etc.

Dans cette optique, je crains que la solution la plus simple consiste à utiliser une variable de session pour transmettre la valeur entre les pages :

Session("id") = 123
Session("a") = "something"

Et puis :

if Session("a") = "something" and Session("id") > 100 then
    response.write("Yes way dude")
else  
    response.write("No way dude")
end if

3voto

Zee Tee Points 4154

Cette question est peut-être ancienne et résolue, mais la meilleure réponse ne mentionne pas tout, et il y a des informations clairement affichées sur Microsoft.com à ce sujet :


Méthode Server.Execute

Les collections et propriétés suivantes sont disponibles pour la page ASP exécutée :

  1. Variables d'application même s'ils sont définis dans la page d'appel.
  2. Propriétés de la session même s'ils sont définis dans la page d'appel.
  3. Variables et propriétés du serveur même s'ils sont définis dans la page d'appel.
  4. Demander des collections et des propriétés même s'ils sont définis dans la page d'appel. Cela inclut Formulaire y Chaîne d'interrogation données transmises à la page appelante.
  5. Collections et propriétés des réponses . Le fichier .asp exécuté peut modifier les en-têtes HTTP. Toutefois, comme pour tout fichier .asp, si le fichier .asp exécuté tente de modifier les en-têtes HTTP après avoir envoyé une réponse au client, il génère une erreur.

Comme vous pouvez le constater, Microsoft propose 5 façons de transmettre des variables à un fichier de type Server.Execute méthode. Avant que je ne voie ceci sur Microsoft, la méthode préférée était Session comme le suggère la meilleure réponse, puisque j'ai vu cela avant l'info sur Microsoft.com. Mais après avoir remarqué que QueryStrings peut être passé de la page précédente, je dois dire que ce battement utilise Session pour le passage des valeurs. Session serait nécessaire si votre application vous obligeait à ajouter des variables à la page en cours d'exécution.

Mais en passant des variables, je dirais QueryStrings et il est facile à appliquer si votre application permet cette flexibilité. Je suis sûr que vous savez déjà utiliser les querystrings, mais dans le sens où vous l'utilisez pour une Server.Execute vous pouvez simplement faire ceci :

Envisagez d'avoir ASP1.asp y ASP2.asp :

ASP1.asp comprend :

 Server.Execute("ASP2.asp")

ASP2.asp comprend :

 Response.Write Request("id")

Lorsque vous appelez ASP1.asp?id=123 Vous remarquerez que ASP2.asp voit également la même chose. Querystring transmis à ASP1.asp, afin qu'il écrive 123 sur la réponse de ASP1.asp.

C'est beaucoup moins compliqué que d'utiliser un Session pour la tâche.

0voto

user3131233 Points 9

En bref : OUI, vous pouvez utiliser les valeurs de QueryString en conjonction avec Server.Execute dans une page ou une application ASP.NET.

Vous pouvez passer des variables dynamiques dans un argument QueryString assemblé dans la page ASPX en cours d'exécution (page1.aspx), comme suit :

    Dim intExample1 As Int = 22
    Dim strExample2 As String = "hello world"
    Server.Execute("page2.aspx?number=" & intExample1 & "&string=" & Server.UrlEncode(strExample2))

Dans cet exemple, page2.aspx peut alors référencer et utiliser les valeurs suivantes :

    Request.QueryString("number")
    Request.QueryString("string")

0voto

Pourquoi ne pas utiliser #include au lieu de server.execute ?

J'ai cherché une différence et j'ai trouvé que dans ce cas particulier, utiliser #include est la meilleure solution : https://en.wikibooks.org/wiki/Active_Server_Pages/Server-Side_Includes#What_it_Does

Vous avez besoin de certaines variables définies dans la page parent pour être utilisées dans la page enfant, donc votre solution pourrait être :

dim id, a
id = 123
a = "something"
if b = "hi" then
    <!--#include file="functions.asp" -->
else
    response.write("No way dude")
end if

Sur fonctions.asp

if a = "something" and cint(id) > 100 then
response.write("Yes way dude")
else
    response.write("No way dude")
end if

Avantages :

  • Faites simplement comme si c'était la même page.
  • Utilisation de variables d'élimination au lieu de variables de session.
  • Ne pas montrer les variables internes dans l'URL principale.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X