He estado intentando sobrecargar mi método de índice.C# mvc 3, sobrecarga de acción?
Éstos son mis métodos índice:
[ActionName("Index")]
public ActionResult IndexDefault()
{
}
[ActionName("Index")]
public ActionResult IndexWithEvent(string eventName)
{
}
[ActionName("Index")]
public ActionResult IndexWithEventAndLanguage(string eventName, string language)
{
}
Esto mantiene la fundición:
La presente solicitud de 'Índice' acción sobre el tipo de controlador 'CoreController' es ambiguo entre los siguientes métodos de acción: sistema. Web.Mvc.ActionResult IndexDefault() en tipo ManageMvc.Controllers.CoreController System.Web.Mvc.ActionResult IndexWithEvent (System.String) en tipo ManageMvc.Controllers.CoreController System.Web.Mvc.ActionResult IndexWithEventAndLanguage (System.String, Sistema. Cadena) en tipo ManageMvc.Controllers.CoreController
¿No es posible sobrecargar la acción de índice con 3 métodos GET diferentes?
Además, si es posible, ¿cuál sería la ruta correcta? Tengo esto:
routes.MapRoute(
"IndexRoute", // Route name
"{eventName}/{language}/Core/{action}", // URL with parameters
new { controller = "Core", action = "Index", eventName = UrlParameter.Optional, language = UrlParameter.Optional }
);
La url se vería así:
localhost/
localhost/event_name// Índice
localhost/event_name/idioma/Core/Índice Core Core/Índice
¿Por qué no funciona esa sobrecarga? – Patrick
@Patrick - Debido a que ASP.NET MVC no puede decidir cuál de sus sobrecargas usar según la forma en que definió la ruta (no es lo suficientemente inteligente como para llamar a diferentes sobrecargas según los parámetros que se pasan en la URL). –
Ahh bien, gracias. Lo cambié a la forma en que sugirió y está funcionando. – Patrick