Hi,
ich beschäftige mich erst seit kurzem mit ASP.NET und mir ist nun etwas aufgefallen. Wenn ich eine Seite mit einem Querystring aufrufe (hier: ?message=TEXT), wird der Inhalt von message in einem Label angezeigt. Auf dieser Seite befindet sich auch ein Formular, welches beim Absenden die Seite neu lädt. in einem if (IsPostBack) {...} - Block verarbeite ich die Angaben des Formulars.
Funktioniert auch alles ganz gut, nur dass der Querystring nach dem Absenden des Formulars erhalten bleibt, gefällt mir gar nicht. Dadurch wird ja der Text aus "message" immer noch angezeigt.
Meine Frage ist also: Wie kann ich den Querystring beim Absenden des Formulars entfernen?
Im action-Attribut des Formulars steht auch immer "Default.aspx?message=TEXT" drin, obwohl ich schon versucht habe, das action-Attribut weg zu lassen. Auch action="Default.aspx" (also ohne Query) bringt keine Veränderung.
Danke im Voraus!
Bringt leider auch nichts. Lediglich die Formularfelder bleiben beim Reload leer. Der Querystring ist aber weiterhin vorhanden... 🤔
Habe es jetzt so gelöst, dass ich im submit-Button das Attribut PostBackUrl="~/Default.aspx" gesetzt habe. Damit funktioniert es... im action-Attribut der Form steht aber imemr noch der Querystring. Es muss doch auch irgendwie möglich sein, diesen gespeicherten Querystring zu entfernen.
Zum ViewState: Auch wenn ich den ViewState deaktiviere, steht im Quelltext noch ein hidden-Feld:
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="..." />
Ist das normal?
So, nach ewiger Suche im Netz bin ich auf die Antwort gestoßen: Es geht nicht. Ich kann das action-Attribut einer Form (runat="server") nicht ändern.
Also muss ich meinen kleinen WorkAround mit Attribut PostBackUrl im submit-Button wohl lassen. Na ja, so lange es funktioniert 🙂
Original von typhos
Meine Frage ist also: Wie kann ich den Querystring beim Absenden des Formulars entfernen?
Unabhängig der Kosmetik. Normalerweise ist das Entfernen des QueryStrings nicht nötig. Auch mit QueryString kannst Du alle Zustände abfragen.
Ja, ist richtig. Aber es ging mir ja (auch) darum, dass der Querystring aus der URL verschwindet. Natürlich hätte ich auch mit IsPostBack abfragen können...