none
Como eliminar caracteres no validos de una URL RRS feed

  • Pregunta

  • Hola

    Tengo una aplicacion en la cual usuarios crean posts/temas. Al crear uno y para accesar a este se realiza el siguien formato de Url:

    http://domain.com/post/{title}/{id}

    Actualmente tengo un problema cuando los usuarios ingresan ciertos caracteres en el titulo del post, que al pasarlos como parametros en la url causan un BadRequest. Actualmente he detectados algunos y he solucionado haciendo Replace, ejemplo:

    value.Replace(' ', '-').Replace('/', '-').Replace('.', '-').Replace(':', '-');

    Per la verdad estos son solo los que he detectado asi que supongo que hay muchos mas... Existe una forma de eliminar todos los caracteres invalidos de una?

    Estoy usando C#, pero adicionalmente me gustaría tener una funcion que los elimine en ese lenguaje y otra que sirva para ser usada en javascript o jquery...

    Saludos

    lunes, 11 de julio de 2016 4:55

Respuestas

Todas las respuestas

  • En servidor puedes utilizar el método UrlEncode.

    Y desde JavaScript el método encodeURIComponent.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    lunes, 11 de julio de 2016 5:29
  • hola

    >>cuando los usuarios ingresan ciertos caracteres en el titulo del post, que al pasarlos como parametros en la url causan un BadRequest.

    que caracteres ingresan ? porque recuerda que si hay expacios el usuario sera quien debe aplciar el encode a la url

    podria ayudarse con la pagina

    Html Encoder

    pero tu no vas a poder aplciar ningun replace porque esto aun no ingresa al pipeline donde procesar los datos

    a donde apunto es que el usuario arma la url con estos caracteres y despues debe aplicar el encode

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 11 de julio de 2016 7:08
  • En servidor puedes utilizar el método UrlEncode.

    Y desde JavaScript el método encodeURIComponent.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    Hola y gracias Asier... Pero la url encode no le aplica un formato.

    Yo necesito que la url sea "entendible", Ejemplo:

    Title: Microsoft Visual Studio

    Url: http://domain.com/post/{id}/{title} ---- http://domain.com/post/1/microsoft-visual studio

    Saludos

    viernes, 15 de julio de 2016 15:00
  • hola

    >>cuando los usuarios ingresan ciertos caracteres en el titulo del post, que al pasarlos como parametros en la url causan un BadRequest.

    que caracteres ingresan ? porque recuerda que si hay expacios el usuario sera quien debe aplciar el encode a la url

    podria ayudarse con la pagina

    Html Encoder

    pero tu no vas a poder aplciar ningun replace porque esto aun no ingresa al pipeline donde procesar los datos

    a donde apunto es que el usuario arma la url con estos caracteres y despues debe aplicar el encode

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    Hola, no entiendo tu punto.... 

    Yo tengo una serie de post y soy yo el que renderiza los links en las vistas para que el usuario haga click... Estos links deben tener la url correcta, ejemplo:

    <a href="http://domain.com/post/1/microsoft-visual studio">Microsoft Visual Studio</a>

    viernes, 15 de julio de 2016 15:03
  • En servidor puedes utilizar el método UrlEncode.

    Y desde JavaScript el método encodeURIComponent.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    Hola y gracias Asier... Pero la url encode no le aplica un formato.

    Yo necesito que la url sea "entendible", Ejemplo:

    Title: Microsoft Visual Studio

    Url: http://domain.com/post/{id}/{title} ---- http://domain.com/post/1/microsoft-visual studio

    Saludos

    Hola,

    puedes explicar un poco más este punto? No entendí muy bien gracias


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    lunes, 18 de julio de 2016 7:44
    Moderador
  • Hola, por lo que entiendo estas mandando un string por url que usar como titulo (o parametro)

    Si es eso puedes usar una funcion que solo deje caracteres validos:

     public string RemoveSpecialCharacters(string str)
            {
                StringBuilder sb = new StringBuilder();
                foreach (char c in str)
                {
                    if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || c == '.' || c == '_')
                    {
                        sb.Append(c);
                    }
                }
                return sb.ToString();
            }

    Esa funcion la puedes usar antes de guardar datos en tu base, osea en tu insert con esa funcion filtras solo los valores validos.

    En esa misma funcion tiene lo básico para filtrar problemas que puedas tener con la url pero si quieres al "if" le agregas alguna cuestión que quieras, por ejemplo podrías decir que si el string tiene un guion medio lo reemplaze por un guión bajo o al revez o la puedes modificar a tu gusto.


    • Editado Cris__01 martes, 19 de julio de 2016 17:41
    martes, 19 de julio de 2016 17:40