Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887

    [1.1] Pulire la querystring

    Effettuo una redirect:

    codice:
                Response.Redirect("wbfgestcontrolli.aspx?msg=Tutte le posizioni dell ADS " & Trim(Request.QueryString("ads")) & " sono state cancellate")
    La pagina destinazione visualizza una msgbox se il valore "msg" della QS non è nullo.
    Quando cambio pagina nel datagrid, però, continuava (giustamente) a mostrarmi la msgbox (controllo semplicemente nel load se quel valore non è blank). Per risolvere, ho scritto:

    codice:
            If Request.QueryString("msg") <> "" Then
                Request.QueryString().Clear()
            End If
    ma mi dice:
    System.NotSupportedException: L'insieme è in sola lettura

    non si puo' pulire la querystring ??

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    ma basta usare la funzione AnnullaQueryString :ignore:

    codice:
    If Not Me.IsPostBack Then
    	AnnullaQueryString(Me)
    End If
    
    
        '----------------------------------------------------------------------
        'Una pagina aspx mantiene sempre la querystring ricevuta.
        'Questa funzione aggiunge codice javascript per togliere la querystring
        '----------------------------------------------------------------------
        Public Sub AnnullaQueryString(ByVal pagina As Page)
            pagina.RegisterClientScriptBlock("annulla_querystring", "<script language=""javascript"" type=""text/javascript"">document.forms[0].action = (document.forms[0].action.indexOf('?') != -1)?document.forms[0].action.substr(0, document.forms[0].action.indexOf('?')): document.forms[0].action;</script>")
        End Sub
    Pietro

  3. #3
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    bella, ma possibile che non abbiano pensato ad una cosa funzionante lato server ?
    O meglio, perche' quella esistente non va ? (request.querystring.clear)

    thx cmq

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da djciko
    bella, ma possibile che non abbiano pensato ad una cosa funzionante lato server ?
    O meglio, perche' quella esistente non va ? (request.querystring.clear)

    thx cmq
    sono daccordo con te. Ma fino a che non avranno risolto, ci arrangiamo da soli
    Pietro

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    non so se ti possa servire:

    ho avuto anch'io problemi col querystring, ma non uso la funzione che ti ho proposto, ma questa
    codice:
        '-----------------------------------------------------------------------------
        'Restituisce il parametro Form se esiste, altrimenti il parametro querystring
        '-----------------------------------------------------------------------------
        Public Function RequestParams$(ByVal nome$)
            Dim s$ = Trim(System.Web.HttpContext.Current.Request.Form(nome))
    
            If s = "" Then
                Return Trim(System.Web.HttpContext.Current.Request.QueryString(nome))
            Else
                Return s
            End If
        End Function
    ti assicuro che ho risolto.

    al posto di eliminare la querystring, ricerco i parametri inviati con la funzione RequestParams, che come vedi, prima cerca Request.Form e, se non trova, nel Request.QueryString
    Pietro

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    la prima che hai postato, non ho capito xche', alla prima richiesta di cambio pagina (del datagrid che sta nella pagina con la QS da pulire), la QS continua ad esistere e mi ripropone la msgbox.

    Alla seconda richiesta di cambio pagina la pulisce

    ora provo l'altra soluzione, thx

  7. #7
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    pietro scusami forse non ho ben capito. quando usi precisamente la seconda ?

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    debbo allora fare una premessa.

    La pagina a.aspx richiama b.aspx spedento un parametro get:
    esempio

    Response.Redirect("b.aspx?variabile1=valore1")

    in b.aspx creo un hidden runat server e lo chiamo per disgrazia, variabile1


    Tutto funziona (apparentemente): quando in b.aspx faccio il submit, ricavo le variabili get e post con Request.Parameters("variabile1") e, invece di ottenere un valore, ottengo i due valori: "valore1,valore1" che mi manda a cas... le routine.

    Allora i casi sono due (o tre)

    1) nella pagina b.aspx mi cancello la querystring che non mi serve un accidenti, dopo la prima richiesta


    2) lascio la queristring dov'è e mi riscrivo la funzione per leggere le variabile post e get
    in questo casto la mia funzione ricava sempre la variabile post, se esiste qualla post e get


    attualmente la uso SEMPRE al posto di Request.Form e Request.QueryString

    sono stato chiaro???
    Pietro

  9. #9
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    NO ma ho capito dove dovrei usarla

    aspè ora provo

  10. #10
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Pietro, preso dalla fretta ho adottato un metodo di cui mi vergogno da solo:

    codice:
    If request.querystring("msg") <> String.Empty then
    Response.Redirect("pagina.aspx")
    End if

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.