Comment puis-je faire & lt; form method = "get" & gt; dans ASP.Net pour un formulaire de recherche?
J'ai un formulaire de recherche dans une application que je suis en train d'élaborer, et j'aimerais que ce soit l'équivalent de method="GET"
.
Ainsi, lorsque vous cliquez sur le bouton de recherche, l'utilisateur passe à search.aspx?q=the+query+he+entered
La raison pour laquelle je veux c'est simplement bookmarkable Url, plus il se sent plus propre de le faire de cette façon.
Je ne veux pas le viewstate champ caché de la valeur ajoutée à l'URL.
Du mieux que je pouvais venir avec c'est:
- Capture le côté serveur événement click du bouton et
Response.Redirect
. - Joindre un Javascript
onclick
gestionnaire pour le bouton qui déclenche unwindow.location.replace
.
Sentez à la fois excentrique et sous-optimal...
Pouvez-vous penser à une meilleure approche?
source d'informationauteur Daniel Magliola
Vous devez vous connecter pour publier un commentaire.
Utiliser un bon vieux formulaire html, pas un serveur de côté la forme (runat=server), et vous devriez en effet être en mesure de le faire fonctionner.
Cependant, ceci pourrait être un problème si vous avez un hors de la zone de visual studio master page qui enveloppe la totalité de la page dans un serveur de côté la forme, parce que vous ne pouvez pas imbriquer les formes.
Formulaires Web n'ont pas à sucer, mais les implémentations par défaut est souvent le cas. Vous n'avez pas à utiliser des formulaires web pour tout. Parfois un bon vieux post/get et le processus de demande de code fera l'amende juste.
J'ai travaillé sur un site web qui a pour poster un 3ème partie du site pour effectuer la recherche sur le site web du client. J'ai fini par faire une simple Réponse.Rediriger et transmis dans les paramètres de recherche par le biais de la chaîne de requête comme ceci:
Et sur votre Recherche.page aspx dans votre pageload...
Espère que cette aide.
Cette fonction permet de soumettre une page à l'aide de la méthode GET.
De soumettre une page à l'aide de la méthode get, vous devez:
Code
Je le ferais (b) puisque (un) aurait besoin de deux voyages aller-retour pour une seule requête. Sinon, vous pouvez désactiver l'état d'affichage sur la page, supprimez tous les autres champs cachés via javascript, et aussi l'utilisation de javascript pour modifier le formulaire en méthode post à obtenir. Je n'ai jamais fait ça pour de vrai, mais mon jouet de page à l'aide de l'échantillon fourni a travaillé comme un charme. Il est sans doute plus facile que l'encodage de la chaîne de recherche et de faire l'obtenir via javascript.
En fait, on dirait que tu serais plus heureuse avec ASP.NET MVC puisque c'est facilement faisable, il y en définissant simplement la méthode du formulaire pour OBTENIR dans la vue.
exemple de code à l'aide de jquery
EDIT: Il semble que vous devriez être en mesure de faire la même chose côté serveur, trop. Peut-être que dans OnPreRenderComplete. N'ont pas accès à Visual Studio dès maintenant à vérifier.
J'ai toujours utilisé de Réponse.Redirection comme ça "fonctionne".
Je ne pense pas qu'il existe une méthode optimale.
Juste l'utiliser dans vos .cliquez sur l'événement avant la soumission du formulaire: