Próbowałem przeciążać moją metodę indeksu.C# mvc 3, przeciążanie akcji?
Oto moje metody index:
[ActionName("Index")]
public ActionResult IndexDefault()
{
}
[ActionName("Index")]
public ActionResult IndexWithEvent(string eventName)
{
}
[ActionName("Index")]
public ActionResult IndexWithEventAndLanguage(string eventName, string language)
{
}
Dzięki temu rzucania:
Obecny wniosek o 'wskaźnik' działanie na typ kontrolera CoreController 'jest niejednoznaczna między następujące metody działania: System. Web.Mvc.ActionResult IndexDefault() na typ ManageMvc.Controllers.CoreController System.Web.Mvc.ActionResult IndexWithEvent (System.String) na typ ManageMvc.Controllers.CoreController System.Web.Mvc.ActionResult IndexWithEventAndLanguage (System.String, System. String) na typ ManageMvc.Controllers.CoreController
Czy nie można przeładować akcji indeksu za pomocą 3 różnych metod GET?
Ponadto, jeśli to możliwe, jaka byłaby właściwa trasa? Mam to:
routes.MapRoute(
"IndexRoute", // Route name
"{eventName}/{language}/Core/{action}", // URL with parameters
new { controller = "Core", action = "Index", eventName = UrlParameter.Optional, language = UrlParameter.Optional }
);
URL będzie wyglądać następująco:
localhost/core/Index
localhost/EVENT_NAME/core/Index
localhost/EVENT_NAME/język/core/Index
Dlaczego ta przeciążenie nie działa? – Patrick
@Patrick - Ponieważ ASP.NET MVC nie może zdecydować, które z twoich przeciążeń ma być używane w oparciu o sposób, w jaki zdefiniowałeś trasę (nie jest wystarczająco inteligentny, aby wywoływać różne przeciążenia w oparciu o parametry przekazywane w adresie URL). –
Ahh ok, dziękuję. Zmieniłem go tak, jak zasugerowałeś i działa. – Patrick