Los parámetros se admiten directamente en MVC simplemente agregando parámetros a sus métodos de acción. Dada una acción como la siguiente:
public ActionResult GetImages(string artistName, string apiKey)
MVC completará automáticamente los parámetros cuando se le dé una URL como:
/Artist/GetImages/?artistName=cher&apiKey=XXX
Un caso especial adicional son los parámetros llamados "id". Cualquier parámetro llamado ID se puede poner en la ruta en lugar de la cadena de consulta, así que algo como:
public ActionResult GetImages(string id, string apiKey)
se rellenaría correctamente con una URL como la siguiente:
/Artist/GetImages/cher?apiKey=XXX
Además, si tiene escenarios más complicados, puede personalizar las reglas de enrutamiento que MVC usa para ubicar una acción. Su archivo global.asax contiene reglas de enrutamiento que se pueden personalizar. Por defecto, la regla se ve así:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
Si quisieras apoyar una url como
/Artist/GetImages/cher/api-key
podría agregar una ruta como:
routes.MapRoute(
"ArtistImages", // Route name
"{controller}/{action}/{artistName}/{apikey}", // URL with parameters
new { controller = "Home", action = "Index", artistName = "", apikey = "" } // Parameter defaults
);
y un método como el primer ejemplo anterior.
Comenzando con MVC 5, también puede usar el Enrutamiento de atributos para mover la configuración de parámetros de URL a sus controladores.
Una discusión detallada está disponible aquí: http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx
Resumen:
Primero habilita el enrutamiento de atributos
Luego puede usar atributos para definir parámetros y, opcionalmente, tipos de datos
fuente
Puede pasar parámetros arbitrarios a través de la cadena de consulta, pero también puede configurar rutas personalizadas para manejarlo de una manera RESTful:
Eso podria ser:
Entonces, si alguien usó la siguiente ruta:
Los llevaría al mismo lugar que su cadena de consulta de ejemplo.
Lo anterior es solo un ejemplo y no aplica las reglas y restricciones comerciales que tendrías que configurar para asegurarte de que las personas no 'piratearan' la URL.
fuente