Intercambio de Valores de URL
Como vimos en el post anterior, podemos definir distintas reglas para manejar nuestras url, ya habíamos dicho que la regla debería contener al menos el valor para el controlador y la vista (ya sea en la misma ruta o con valores por defecto), pero adicionalmente nuestra ruta contenía algunas variables que seguramente necesitaríamos para poder mostrar determinada información.
Recordemos uno de los ejemplos dados:
http://webcelulares.com/Catalogo/Smartphones/LG/DG952
En esta url corresponde a la regla "{controller}/{action}/{marca}/{modelo}", en la cual nuestro controlador es Catalogo y nuestra vista es Smartphones pero las variables marca y modelo seguramente son datos necesarios para que la web muestre los detalles de ese smartphone.
Entonces ¿cómo puedo obtener los valores de esas variables?, pues lo hacemos desde nuestro controlador. para ello definimos las variables como parámetros en la acción del controlador:
(Crearemos un proyecto MVC3 vacío)
Agregamos la ruta a nuestro global.asax, el controlador Catalogo y la acción Smartphones:
Aquí debemos tener en cuenta lo siguiente:
public class CatalagoController : Controller {
public ActionResult Smartphones(String marca, String modelo)
{
return View();
}
}
Ahora agregamos un punto de interrupción (F9) en la linea return View(); y ejecutamos.public ActionResult Smartphones(String marca, String modelo)
{
return View();
}
}
Al ejecutar mostrará un error pues la url que se muestra no cumple con nuestra regla, debemos ingresar a la ruta: localhost:xxx/Catalogo/Smartphones/LG/D625:
- Los nombres de los parámetros deben ser iguales a los nombres definidos en nuestra regla. MVC no diferencia entre mayúsculas y minúsculas. Cambiamos en nombre del parámetro marca a marcaTelefono y ya no es reconocido, también cambiamos el nombre del parametro modelo a Modelo, pero éste aun es reconocido.
- MVC hará un parseo del valor en la url al tipo de dato definido en la acción, si el tipo de dato no corresponde ocurrirá un error.
- Podemos definir más variables como parámetro a en la url sin necesidad de registrarlos en el global.asax, estos deberán ser enviado como un querystring en la url.
Ingresamos la url: http://localhost:8010/Catalogo/Smartphones/LG/D625?color=black&version=4.2.2
- Podemos definir valores por defecto para cada una de las variables, en caso sea necesario.
Ingresamos la url: http://localhost:8010/Catalogo/Smartphones/LG/D625, podemos observar que al no enviarle valores a los parámetros, estos no tienen valor null, sino el valor por defecto.
De esta manera es que podemos capturar los datos de la url para ser utilizados en nuestra aplicación.
Pueden descargar este proyecto haciendo clic aqui
Hasta el siguiente post!!.
Pueden descargar este proyecto haciendo clic aqui
Hasta el siguiente post!!.










0 comentarios :
Publicar un comentario