Tengo una vista llamada Browse.chtml
, donde el usuario puede ingresar un término de búsqueda o dejar el término de búsqueda en blanco. Al ingresar el término de búsqueda, quiero dirigir la página a http://localhost:62019/Gallery/Browse/{Searchterm}
y cuando no se ingresa nada, quiero dirigir el navegador a http://localhost:62019/Gallery/Browse/Start/Here
.
Cuando intento esto, aparece el error:
La solicitud actual para la acción 'Examinar' en el tipo de controlador 'GalleryController' es ambigua entre los siguientes métodos de acción: System.Web.Mvc.ActionResult Browse (System.String) en el tipo AutoApp_MVC.Controllers.GalleryController System.Web.Mvc.ActionResult Browse (Int32, System.String) en el tipo AutoApp_MVC.Controllers.GalleryController
Todo lo que estoy haciendo con MVC es por primera vez. No estoy seguro de qué más probar en este momento.
public ActionResult Browse(string id)
{
var summaries = /* search using id as search term */
return View(summaries);
}
public ActionResult Browse(string name1, string name2)
{
var summaries = /* default list when nothing entered */
return View(summaries);
}
También tengo esto en Global.asax.cs:
routes.MapRoute(
"StartBrowse",
"Gallery/Browse/{s1}/{s2}",
new
{
controller = "Gallery",
action = "Browse",
s1 = UrlParameter.Optional,
s2 = UrlParameter.Optional
});
routes.MapRoute(
"ActualBrowse",
"Gallery/Browse/{searchterm}",
new
{
controller = "Gallery",
action = "Browse",
searchterm=UrlParameter.Optional
});
fuente
return View("Browse", summaries);
No sé cuándo se hizo la pregunta, esta solución estaba disponible, pero puede usar:
Entonces esto debería funcionar bien para su problema:
fuente
Agregue el siguiente código en RouteConfig.cs antes de la ruta predeterminada
Y agregue atributos de ruta en el controlador como:
fuente
Creo que el punto es que no es necesario probar implícitamente los parámetros de la cadena de consulta utilizando la clase de solicitud.
MVC hace el mapeo por usted (a menos que haya realizado cambios severos en sus rutas MVC).
Por lo tanto, una ruta de enlace de acción de
estaría automáticamente disponible para su controlador (de superficie) con el parámetro definido:
MVC hace el trabajo.
fuente