web-dev-qa-db-fra.com

Comment passer plusieurs paramètres dans une chaîne de requête

J'ai trois valeurs que je dois transmettre en tant que paramètres, par exemple, strID, strName et strDate.

Je souhaite rediriger ces trois paramètres vers une autre page dans Response.Redirect() Quelqu'un peut-il me fournir la chaîne de requête correcte?

76
user42348

Query_string

(Vous trouverez ci-dessous le texte de la section liée de l'entrée Wikipedia.)

Structure

Une URL typique contenant une chaîne de requête est la suivante:

http://server/path/program?query_string

Lorsqu'un serveur reçoit une demande pour une telle page, il exécute un programme (s'il est configuré pour le faire), en transmettant la chaîne query_string sans modification au programme. Le point d'interrogation est utilisé comme séparateur et ne fait pas partie de la chaîne de requête.

Un lien dans une page Web peut avoir une URL contenant une chaîne de requête. Cependant, HTML définit trois manières pour un navigateur Web de générer la chaîne de requête:

  • un formulaire web via l'élément ...
  • une carte-image côté serveur via l'attribut ismap sur l'élément avec une construction
  • une recherche indexée via l'élément maintenant obsolète

Formulaires Web

Les chaînes de requête sont principalement utilisées pour contenir le contenu d'un formulaire HTML, également appelé formulaire Web. En particulier, lorsqu'un formulaire contenant les champs field1, field2, field3 est soumis, le contenu des champs est codé sous forme de chaîne de requête de la manière suivante:

field1=value1&field2=value2&field3=value3...

  • La chaîne de requête est composée d'une série de paires champ-valeur.
  • Dans chaque paire, le nom du champ et la valeur sont séparés par un signe égal. Le signe égal peut être omis si la valeur est une chaîne vide.
  • La série de paires est séparée par l'esperluette '&' (ou un point-virgule, ';' pour les URL incorporées au format HTML et non générées par un ...; voir ci-dessous). Bien qu'il n'existe pas de norme définitive, la plupart des frameworks Web permettent d'associer plusieurs valeurs à un seul champ:

field1=value1&field1=value2&field1=value3...

Pour chaque champ du formulaire, la chaîne de requête contient une paire champ = valeur. Les formulaires Web peuvent inclure des champs non visibles pour l'utilisateur. ces champs sont inclus dans la chaîne de requête lorsque le formulaire est soumis

Cette convention est une recommandation du W3C. Le W3C recommande à tous les serveurs Web de prendre en charge les séparateurs point-virgule, en plus des séparateurs esperluette [6], afin d'autoriser les chaînes de requête application/x-www-form-urlencoded dans les URL des documents HTML sans avoir à échanger des esperluettes d'échappement.

Techniquement, le contenu du formulaire est uniquement codé en tant que chaîne de requête lorsque la méthode de soumission du formulaire est GET. Le même codage est utilisé par défaut lorsque la méthode de soumission est POST, mais le résultat n'est pas envoyé en tant que chaîne de requête, c'est-à-dire qu'il n'est pas ajouté à l'URL d'action du formulaire. Au lieu de cela, la chaîne est envoyée en tant que corps de la requête HTTP.

91
vartec
Query String: ?strID=XXXX&strName=yyyy&strDate=zzzzz

avant de rediriger:

string queryString = Request.QueryString.ToString();

Response.Redirect("page.aspx?"+queryString);
31
rAm

Essayez comme ça.Il devrait fonctionner

Response.Redirect(String.Format("yourpage.aspx?strId={0}&strName={1}&strDate{2}", Server.UrlEncode(strId), Server.UrlEncode(strName),Server.UrlEncode(strDate)));
14
Ankush Dubey
~mypage.aspx?strID=x&strName=y&strDate=z
7
Adam Ralph

Cela peut être fait en utilisant:

Response.Redirect("http://localhost/YourControllerName/ActionMethodName?querystring1=querystringvalue1&querystring2=querystringvalue2&querystring3=querystringvalue3");
5
HariPrasad

J'utilise AbsoluteUri et vous pouvez l'obtenir comme ceci:

string myURI = Request.Url.AbsoluteUri;
 if (!WebSecurity.IsAuthenticated) {
        Response.Redirect("~/Login?returnUrl="
            + Request.Url.AbsoluteUri );

Ensuite, après vous être connecté:

var returnUrl = Request.QueryString["returnUrl"];
 if(WebSecurity.Login(username,password,true)){
                Context.RedirectLocal(returnUrl);

Cela fonctionne bien pour moi.

1
Thomas Fonseca