none
Url amigable RRS feed

  • Pregunta

  • Hola, en mi app MVC2 obtengo Url's como esta : Dominio/Anuncio/Detalle/25 , donde 25 es el id del anuncio de tipo int.

    Quisiera obtener algo como : Dominio/Anuncio/Detalle/titulo-del-anuncio

    De antemano muchas gracias.

    Saludos


    • Editado Richof sábado, 14 de abril de 2012 15:55
    sábado, 14 de abril de 2012 15:45

Todas las respuestas

  • No hay problema. Salvo que hayas puesto aposta un filtro en el mapa de URLs para exigir que el id sea entero, de forma predeterminada el parámetro id que va al final de la URL puede ser de cualquier tipo, incluido un string.

    Por lo tanto basta con que definas tu método de acción de forma que el parámetro sea de tipo string:

    public ActionResult Detalle(string id) { ... }

    Lógicamente, dentro del método, cuando vayas a buscar el anuncio (que supongo que está en base de datos) tendrás que buscar el id sobre la columna "título" y no sobre la columna "idAnuncio" (o como la hayas llamado).

    • Propuesto como respuesta Pedro Hurtado sábado, 14 de abril de 2012 17:38
    sábado, 14 de abril de 2012 16:44
  • Gracias por responder, eso implicaria tener que utilizar el Titulo en lugar del idAnuncio  como parametro de busqueda del anuncio en la BD?
    • Editado Richof sábado, 14 de abril de 2012 19:26
    sábado, 14 de abril de 2012 19:25
  • Exacto. Si en la URL lo que metes es el título, entonces el único dato del que vas a poder disponer para hacer la búsqueda es el título (aunque el nombre de la variable sea "id"). Así que ese id de tipo string tienes que buscarlo sobre el campo que uses como título, si en las URLs lo que estás metiendo es el título.

    Por supuesto, los títulos tendrás que "limpiarlos" para que sean compatibles con las URLs, por ejemplo, en una URL no se admiten eñes ni vocales con tilde, por lo que estos caracteres tendrás que sustituirlos por algún código adecuado a la hora de escribirlos en la URL. También es muy típico (como en el ejemplo que tú mismo pusiste en la pregunta original) cambiar los espacios en blanco por guiones. Evidentemente, cuando ese dato lo recibas en el "id" en tu método de acción, tendrás que deshacer esos cambios antes de poder hacer la búsqueda en la base de datos.

    sábado, 14 de abril de 2012 19:32
  • Exacto. Si en la URL lo que metes es el título, entonces el único dato del que vas a poder disponer para hacer la búsqueda es el título (aunque el nombre de la variable sea "id"). Así que ese id de tipo string tienes que buscarlo sobre el campo que uses como título, si en las URLs lo que estás metiendo es el título.

    Por supuesto, los títulos tendrás que "limpiarlos" para que sean compatibles con las URLs, por ejemplo, en una URL no se admiten eñes ni vocales con tilde, por lo que estos caracteres tendrás que sustituirlos por algún código adecuado a la hora de escribirlos en la URL. También es muy típico (como en el ejemplo que tú mismo pusiste en la pregunta original) cambiar los espacios en blanco por guiones. Evidentemente, cuando ese dato lo recibas en el "id" en tu método de acción, tendrás que deshacer esos cambios antes de poder hacer la búsqueda en la base de datos.

    Hola Alberto, quisiera mantener el idAnuncio (único) como parametro de busqueda en la BD, pero en la Url mostrar el Titulo en lugar del idAnuncio, es posible esto?

    saludos

     
    sábado, 14 de abril de 2012 20:07