Is er een manier om de query's te wijzigen zonder dat een ASP.Net postback?

stemmen
1

Na het lezen van hier en rond het net, ik ben in de buurt van de veronderstelling dat het antwoord nee is, maar ...

Laten we zeggen dat ik heb een ASP.Net pagina die soms heeft een query string parameter. Als de pagina is de parameter query string, ik wil het voor strippen af, tijdens of na de postback. De pagina heeft al veel van client-side script (pure JavaScript en jQuery).

Als voorbeeld, zeg ik te laden:

http://myPage.aspx?QS=ABC

De parameter QS is noodzakelijk om te bepalen wat er op de pagina wanneer het eerst wordt geladen en door de pagina met de noemt is ingesteld. myPage.aspxheeft vorm elementen die moeten worden ingevuld en heeft een submit knop die een postback doet. Wanneer de pagina postback is voltooid, moet ik terug URL te zijn:

http://myPage.aspx

teneinde de client-side code die wordt aangeroepen wanneer de query string aanwezig is voorkomen. Met andere woorden, na een in te dienen Ik wil niet dat de client acties in verband met de query string parameter om te vuren. Ik weet dat ik kon de inhoud vorm toe te voegen aan de URL query string zelf parameters en net omleiden naar de nieuwe URL en te voorkomen dat het indienen / postback, maar dat zal veel meer soort controle op de codebehind om slechte data en casual spoofing te voorkomen vereisen. Ik veronderstelde dat ik kon ook een verborgen veld in de onderliggende code en kijk naar het samen met de query string naar de client-side gedrag als ik terug kom van de postback annuleren, maar dat laat nog steeds de query string intact in principe voor eeuwig en ik wil om zich te ontdoen van het na de eerste pagina te laden.

Ideeën of best practices?

PS - Is er iets wat ik kan doen met de Form.Action eigenschap die de postback gedrag zal breken?

De vraag is gesteld op 09/12/2008 om 16:44
bron van user
In andere talen...                            


3 antwoorden

stemmen
2

Ik zou een gebruik HttpModule te onderscheppen en te herschrijven van de URL en de vraag als het in kwam. Ik ben niet 100%, maar ik geloof niet dat dit van invloed is met viewstate.

Het klinkt (en ziet) complex, maar het is eigenlijk vrij triviaal en staat open voor een ton van verfijning en uitbreiding (zoals per .NET in het algemeen).

antwoordde op 09/12/2008 om 17:42
bron van user

stemmen
1

IAM niet zeker of dit is wat je zoekt, maar als het goed begrijp kun je dit doen:

-on paginalading cheque met het QS waarde, indien het niet gebruiken daar een verborgen invoerveld.

-eerste tijd pagina wordt geladen met QS, doe je normale verwerking en opslag QS waarde in een verborgen invoerveld.

-indien geen QS vervolgens de verborgen invoerwaarde

-na postback, kon je naar dezelfde pagina, op dat moment kon je gebruiker Request.Form [] om de verborgen invoerveld te halen, nog steeds de gegevens op de juiste laden, maar zich te ontdoen van de QS.

was het logisch in mijn hoofd, ik ben niet zeker of het zinvol nu, maar ik zal u laten beslissen.

antwoordde op 09/12/2008 om 17:34
bron van user

stemmen
1

Het is waarschijnlijk een slechte gewoonte, maar in die gevallen (en die ik moet gewoon 'reset' de pagina), doe ik gewoon een Response.Redirect naar dezelfde pagina.

antwoordde op 09/12/2008 om 16:47
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more