Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [VB.net]Problema su url con carattere #

    Salve, sto cercando di creare un comparatore di prezzi e mi sono accorto che, se arrivo alla pagina di comparazione dei prodotti e mi imbatto in un prodotto con il codice # non mi funziona nulla.

    In pratica, se gli dico di confrontarmi le offerte per i prodotti con codice CC394A#BAZ lui mi porta si alla corrispondente pagina, ma poi legge come codice solo ciò che precede il catattere #

    Per capire meglio cliccate sulla prima stampante della pagina
    http://www.prezzieofferte.com/fascia...stampantilaser

    Il link non è inserito per finalità autopromozionali o spam e , come al solito, appena risolvo contatto un moderatore per farlo eliminare.

  2. #2
    non vedendo il codice, non so se il problema deriva dall'url, o dalla sua lettura dalla pagina.
    Dovresti postare il codice, altrimenti vado ad ipotesi.

    Vedendo il tuo sito, mi sembra che l'url venga srcitto bene. Il problema sta quando dalla pagina leggi il codice (ipotesi)
    codice:
    string nome = Request.QueryString["nome"];
    il problema è che il simbolo "#" spezza il valore e non viene letto.

    Allora dovresti sostituirlo nell'url con il relativo codice codificato, che è "%23"

    quindi se scrivi
    www.blablabla.com/pagina.aspx?nome=CC394A%23BAZ
    tutto si risolve.

    In teoria, quello che passi come parametri in un url, dovresti sempre codificarlo in questo modo:
    codice:
    string codiceProdotto = "CC394A#BAZ";
    string urlPagina = string.Concat("www.blablabla.com/pagina.aspx?nome=", Server.UrlEncode(codiceProdotto));
    ciao

  3. #3

    altri caratteri non concessi nella url_?

    Visto che ci siamo, mi indicate altri caratteri che non vengono ben visti nella url?
    Così creo una funzione unica. Magari poi posto il tutto sul forum per i posteri.

  4. #4

    Re: altri caratteri non concessi nella url_?

    Originariamente inviato da binos1979
    Visto che ci siamo, mi indicate altri caratteri che non vengono ben visti nella url?
    Così creo una funzione unica. Magari poi posto il tutto sul forum per i posteri.
    in genere i caratteri da usare come valori per i parametri in querystring, dovrebbero essere solo alfanumerici. Altri caratteri consiglio di codificarli come ti ho detto.

    ciao

  5. #5
    Ok e in vb.net ? quello non è c#?

  6. #6
    codice:
     Dim s As String
     s =   Server.UrlEncode("ASP.NET Examples")
    In una pagina web funziona, però, utilizzato in una classe non mi funziona più.

    Mi dice nome server non dichiarato.

    Aggiungendo invece
    codice:
    Imports System.Web.UI.Page
    alla classe mi dice: Il riferimento a un membro non condiviso richiede un riferimento a un oggetto.

  7. #7
    no, quell'import è sbagliato, non puoi importare una classe, ma solo un namespace,
    quindi o ti fermi a System.Web, o a System.Web.UI.


    non trovo molto giusto che ad una classe arrivi un url, io gli farei arrivare la stringa già decodificata,
    comunque, questione di gusti,
    in una classe che non è una pagina web, devi usare
    codice:
    string url = System.Web.HttpUtility.UrlEncode(inputUrl);

  8. #8
    PEr una classe invece

    codice:
    HttpContext.Current.Server.UrlEncode(

  9. #9
    Originariamente inviato da djciko
    binos, comunque alla fine la soluzione per il tuo sito dovrebbe essere:

    codice:
    Dim codiceProdotto As String = Request.QueryString("nome")
    Dim urlPagina As String = String.Concat("www.blablabla.com/pagina.aspx?nome=",Server.UrlEncode(codiceProdotto))
    (nella PAGINA)

    Mi sa che c'è un po di confusione.
    come dici tu, prendi il valore del parametro dal querystring e poi ce lo rimetti, ma è sbagliato, l'esigenza del nostro amico è diversa.
    Comuqnue sia, quando prendi un valore dal querystring, e nel querystring c'è un carattere particolare come il #, la stringa si spezza.

    esempio:
    www.blabla.com/pagina.aspx?nome=CC394A#BAZ
    codice:
    Dim codiceProdotto As String = Request.QueryString("nome")
    ' codiceProdotto = CC394A
    Dim urlPagina As String = String.Concat("www.blablabla.com/pagina.aspx?nome=",Server.UrlEncode(codiceProdotto))
    ' urlPagina = www.blabla.com/pagina.aspx?nome=CC394A

  10. #10
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Hai ragione la cosa è al contrario, non si parla del Get nel codice ma della corretta formazione della stringa per generare l'URL della pagina.

    Mi correggo binos, la Request non c'entra nulla. Ora cancello i post errati per scorrevolezza.

    VB.Net:
    codice:
    Dim codiceProdotto As String = ' provenienza del codice prodotto da link o altro
    Dim urlPagina As String = String.Concat("www.blablabla.com/pagina.aspx?nome=",Server.UrlEncode(codiceProdotto))
    Ciao

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.