Wie kann ich das machen <form method="get"> in ASP.Net für ein such-Formular?
Ich habe ein Suchformular in eine app-ich bin derzeit in Entwicklung, und ich möchte für Sie gleichbedeutend mit method="GET"
.
Damit, beim klicken auf die Schaltfläche suchen, der Benutzer geht zu search.aspx?q=the+query+he+entered
Der Grund, warum ich wollen, das ist einfach bookmarkable URLs, plus es fühlt sich sauberer, es zu tun auf diese Weise.
Ich auch nicht wollen, dass der viewstate "verstecktes Feld" Wert an die URL angehängt.
Die besten, die ich gefunden habe für dies ist:
- Erfassen Sie die server-side-click-Ereignis der Schaltfläche und
Response.Redirect
. - Befestigen Sie einen Javascript -
onclick
- handler für die Schaltfläche ein, feuert einwindow.location.replace
.
Beide fühlen sich skurrile und sub-optimale...
Fällt Ihnen ein besserer Ansatz?
InformationsquelleAutor Daniel Magliola | 2008-11-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden plain old html-Formular, nicht eine server-side form (runat=server), und Sie sollten in der Tat in der Lage sein, es zu schaffen.
Könnte dies jedoch ein problem sein, wenn Sie eine out of the box visual studio-master-Seite, die umschließt die gesamte Seite in ein Serverseitiges Formular, da können Sie nicht nest Formen.
Web-Formulare müssen nicht saugen, aber die Standard-Implementierungen oft tun. Sie nicht haben, um web-Formulare für alles. Manchmal ist die gute alte post/get-und Prozess Anforderung code gerade richtig.
Ich habe gearbeitet, um das ein paar mal durch das hinzufügen eines weiteren Platzhalter außerhalb der form, aber innerhalb der main-content-div. Hängt davon ab, wie Ihre app ist übersichtlich, aber manchmal möglich, wenn Ihr nav setzt auf sein in der form, dann probby nicht möglich.
FYI - Die "wrapper" - form wird nur erstellt, wenn Sie nicht erstellen Sie Ihre eigenen Formular-Elementen. Ich habe master-Seiten mit HTML und server-Seite bildet im master-Seiten alle über dem Platz 🙂
Ich würde sagen: "verwenden Sie ein HTML-Formular" als gut, obwohl, also +1 für diesen Teil der Antwort 🙂
Ich wünschte, jemand hatte erzählte den Menschen das Projekt zu erstellen komme ich gerade an, Sie nicht zu verlassen in der Standard-form einwickeln der masterpage.. horrend.
InformationsquelleAutor seanb
Arbeitete ich auf einer Website, der hatte zu post zu einem 3rd-party-Website, um die Suche auf dem client-web-site. Ich endete damit, dass eine einfache Antwort.Umleiten und übergeben Sie die Suchparameter durch den Abfrage-string wie folgt:
Und auf Ihrer Suche.aspx-Seite in Ihrem pageload...
Hoffe, das hilft.
InformationsquelleAutor Solburn
Diese Funktion dient zum senden einer Seite mit der GET-Methode.
Einreichen eine Seite über die get-Methode müssen Sie zu:
Code
InformationsquelleAutor Valerio Gentile
Ich tun würde, (b), da (a) erfordern würde, zwei hin-und Rückfahrten für eine einzelne Abfrage. Alternativ können Sie deaktivieren Sie viewstate auf die Seite, entfernen Sie eventuelle andere hidden-Felder per javascript, und auch die javascript verwenden, ändern Sie die Formular-Methode post zu bekommen. Ich habe noch nie getan, diese für real, aber mein Spielzeug-Seite mit Hilfe der mitgelieferten Beispiel-arbeitete wie ein Charme. Es ist wohl einfacher als die Kodierung der such-string und tut das via javascript.
Tatsächlich, es klingt wie Sie wäre glücklicher mit ASP.NET MVC, da dieser leicht machbar es durch einfaches einstellen der form-Methode auf, um in die Ansicht.
Beispielcode mit jquery
EDIT: Es scheint, wie Sie sollten in der Lage sein, dasselbe zu tun, was server-Seite auch. Vielleicht in OnPreRenderComplete. Habe keinen Zugriff auf Visual Studio mit der rechten jetzt zu überprüfen.
InformationsquelleAutor tvanfosson
Ich immer Antwort.Redirect, wie es "funktioniert".
Ich glaube nicht, dass es eine optimale Methode.
InformationsquelleAutor cbp
Verwenden Sie einfach diese in Ihr .click-Ereignis vor dem senden des Formulars:
Es entfernt die viewstate-und eventvalidation strings aus den resultierenden querystring erzeugt durch die form GET-Methode. Sie halten, in Ihrem Formular-Ereignis oder-senden-Schaltfläche click-Ereignis.
InformationsquelleAutor DBithead