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

89

J'ai trois valeurs qui je passer en tant que paramètres pour l' exemple strID, strNameet strDate.

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

user42348
la source

Réponses:

111

Chaîne de requête

(Voici 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 passant la chaîne query_string inchangée 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 qui contient une chaîne de requête, cependant, HTML définit trois façons dont un navigateur Web peut générer la chaîne de requête:

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

Formulaires Web

L'utilisation principale des chaînes de requête est de contenir le contenu d'un formulaire HTML, également appelé formulaire Web. En particulier, lorsqu'un formulaire contenant les champs champ1, champ2, champ3 est soumis, le contenu des champs est codé comme une chaîne de requête comme suit:

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 et la valeur du champ 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 point-virgule, «;» pour les URL incorporées dans HTML et non générées par un ...; voir ci-dessous). Bien qu'il n'y ait 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 qui ne sont pas 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 que tous les serveurs Web prennent en charge les séparateurs par point-virgule en plus des séparateurs d'esperluette [6] pour autoriser les chaînes de requête application / x-www-form-urlencoded dans les URL des documents HTML sans avoir à échapper les esperluettes d'entité.

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é sous forme de chaîne de requête, c'est-à-dire qu'il n'est pas ajouté à l'URL d'action du formulaire. Au contraire, la chaîne est envoyée en tant que corps de la requête HTTP.

vartec
la source
34
Query String: ?strID=XXXX&strName=yyyy&strDate=zzzzz

avant de rediriger:

string queryString = Request.QueryString.ToString();

Response.Redirect("page.aspx?"+queryString);
RAM
la source
15

Essayez comme ça, ça devrait marcher

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

Cela peut être fait en utilisant:

Response.Redirect("http://localhost/YourControllerName/ActionMethodName?querystring1=querystringvalue1&querystring2=querystringvalue2&querystring3=querystringvalue3");
HariPrasad
la source
1
@DalijaPrasnikar ce "lien" est une URL pointant vers localhost et fait partie de la réponse. Merci de ne pas "robo-review".
ElGavilan
1

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 );

Puis après vous être connecté:

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

Cela fonctionne bien pour moi.

Thomas Fonseca
la source