[RESOLU][ASPNET][C#]Effectuer une recherche avec paramètre dans l'URL

Salut,
Voilà j’ai une application web proposant une recherche à laquelle on peut acceder de deux manières:
1- On lance la page d’accueil et on tombe sur la page vide de recherche.
2- On passe un critère de recherche en paramètre de l’URL (genre http://localhost/monWeb/accueil.aspx?critere=poiuy) ce qui amène sur la page d’accueil mais avec le résultat de la recherche réalisée (ici sur le mot “poiuy”).

Mon souci avec la 2eme méthode viens du fait que si je lance l’appli une première fois avec le critère dans l’URL, la recherche s’effectue bien. Mais si dans la même instance IE, je colle l’URL de mon site dans la barre d’adresse avec un autre paramètre de recherche, j’obtient à chaque fois le résultat de la recherche précedente.

C’est comme si vous colliez dans la barre d’adresse de IE http://www.google.fr/search?hl=fr&q=poiuy puis http://www.google.fr/search?hl=fr&q=azerty et que Google vous ouvre à chaque fois la même page que pour la première recherche sur poiuy. Or Google arrive à refaire la recherche sur le nouveau critère.

J’espère que j’ai bien expliqué le problème et surtout que quelqu’un connais la solution B)

@++
ZeP

Si tu utilises à la réception du paramètre la commande “Request.QueryString[“mon_param”];” , je pense qu’il faudra initialiser cette querystring une fois que tu as acquis le résultat de recherche.

Ca ne devrait pas se passer comme ca. Comment procede tu pour récupérer ta variable ? à quel endroit lance tu la recherche ? Page_Load ? Application_Load ? Autrement ? En gros fait péter les détails ! B)

Bon en fait je voulais pas passer pour un incompétent notoire alors j’ai caché volontaire quelques détails. Faut pas s’offusquer si c’est pas propre B)

Donc la recherche est effectué dans le Session_Start du Global.asax. C’est dans cette méthode que je détecte si je suis dans le cas 1 (pas de paramètre) ou dans le cas 2 (avec un parametre). Si je suis dans le cas 2, je récupere le paramètre avec

string critere = Request.Params["critere"];Puis j’effectue la recherche avec ce critère, remplie une arraylist résultat et j’affiche la page d’accueil. La page d’accueil se chargeant de vérifier que si l’arraylist n’est pas vide alors elle remplie la DataGrid de résultat.

En fait, le soucis c’est que je ne repasse jamais dans le Session_Start quand je colle l’URL avec un nouveau critère. Du coup il me recharge les même résultat (même arraylist). Il ne repasse pas non plus dans le Application_Start, ce qui m’aurait permis de vider la Session mais même pas.
J’ai essayé de lancer l’application avec un critère, fait IISRESET, puis coller l’url avec un autre critère de recherche et bien là ca marche parce qu’il va passer dans le Session_End au moment du IISRESET.

Voila j’espère que j’ai mis assez d’infos cette fois. Sinon faites moi signe.
Merci pour les réponse rapide en tout cas.
ZeP

[quote=“zepostman, post:4, topic: 30854”]Bon en fait je voulais pas passer pour un incompétent notoire alors j’ai caché volontaire quelques détails. Faut pas s’offusquer si c’est pas propre B)

Donc la recherche est effectué dans le Session_Start du Global.asax. C’est dans cette méthode que je détecte si je suis dans le cas 1 (pas de paramètre) ou dans le cas 2 (avec un parametre). Si je suis dans le cas 2, je récupere le paramètre avec

string critere = Request.Params["critere"];Puis j’effectue la recherche avec ce critère, remplie une arraylist résultat et j’affiche la page d’accueil. La page d’accueil se chargeant de vérifier que si l’arraylist n’est pas vide alors elle remplie la DataGrid de résultat.

En fait, le soucis c’est que je ne repasse jamais dans le Session_Start quand je colle l’URL avec un nouveau critère. Du coup il me recharge les même résultat (même arraylist). Il ne repasse pas non plus dans le Application_Start, ce qui m’aurait permis de vider la Session mais même pas.
J’ai essayé de lancer l’application avec un critère, fait IISRESET, puis coller l’url avec un autre critère de recherche et bien là ca marche parce qu’il va passer dans le Session_End au moment du IISRESET.

Voila j’espère que j’ai mis assez d’infos cette fois. Sinon faites moi signe.
Merci pour les réponse rapide en tout cas.
ZeP[/quote]

Bon, du taf je peux pas vérifier, mais la logique voudrais que ta session start se passe qu’une fois, quand ta session démarre. Autrement dit, c’est pas au bon endroit. Je reccomenderais plutôt le Page_Load de accueil.aspx, avec pour savoir dans quel cas tu te trouve :

protected void Page_Load(object sender, EventArgs e) { if(Request.QueryString["critere"] != null) { // Je suis dans le cas ou j'ai un parametre, je fait une recherche } else { // Je n'ai pas de parametres, on affiche la page de recherche toute vide } }

J’en profite pour préciser quelques détails : Application_Start démarre (en gros hein, c’est pas tout a fait exact) la toute premiere fois qu’un utilisateur la webap. Tant que le serveur est pas coupé ou redémarré, ca ne se relance plus (en gros). Session_Start démarre une fois par utilisateur, tant qu’il a son navigateur ouvert (ou que la session n’a pas expiré en fonction des parametres). Page_Load se lance à chaque fois que la page est chargée, indépendamment du statut de la webapp ou de la session.

En gros, dans Application, tu met tout ce qui concerne l’ensemble des utilisateurs (par exemple, un compteur global de connecté en simultané). Dans Session, tu met les parametres qui doivent survivre au changement de page (par exemple, le login et le mot de passe). Dans la page, tu met tout ce qui concerne cette page en particulier. (Je simplifie a mort, mais c’est pour que t’ai les grandes lignes).

Salut
Merci pour les explications en plus. Je les avaient pas lu ce matin.
Sinon j’ai fait comme tu as dis. J’ai viré le code du Session_Start pour le mettre dans le pageLoad de la main page. Ca semble marcher bien mieux. On verra à l’usage si ca marche aussi bien B)

Encore merci.
ZeP