Ho cercato di sovraccaricare il mio metodo di indice.C# mvc 3, sovraccarico di azioni?
Qui sono i miei metodi di indice:
[ActionName("Index")]
public ActionResult IndexDefault()
{
}
[ActionName("Index")]
public ActionResult IndexWithEvent(string eventName)
{
}
[ActionName("Index")]
public ActionResult IndexWithEventAndLanguage(string eventName, string language)
{
}
Ciò mantiene casting:
La richiesta attuale di 'indice' azione sul tipo di controllore 'CoreController' è ambiguo tra i seguenti metodi di azione: sistema. Web.Mvc.ActionResult IndexDefault() sul tipo ManageMvc.Controllers.CoreController System.Web.Mvc.ActionResult IndexWithEvent (System.String) sul tipo ManageMvc.Controllers.CoreController System.Web.Mvc.ActionResult IndexWithEventAndLanguage (System.String, Sistema. String) sul tipo ManageMvc.Controllers.Core Controller
Non è possibile sovraccaricare l'azione dell'indice con 3 metodi GET diversi?
Inoltre, se possibile, quale sarebbe il percorso corretto? Ho questo:
routes.MapRoute(
"IndexRoute", // Route name
"{eventName}/{language}/Core/{action}", // URL with parameters
new { controller = "Core", action = "Index", eventName = UrlParameter.Optional, language = UrlParameter.Optional }
);
L'URL sarà simile:
localhost/core/Indice
localhost/event_name/core/Indice
localhost/event_name/lingua/core/Indice
Perché questo sovraccarico non funziona? – Patrick
@Patrick - Perché ASP.NET MVC non può decidere quale dei sovraccarichi utilizzare in base al modo in cui è stata definita la route (non è abbastanza intelligente chiamare sovraccarichi diversi in base a quali parametri vengono passati nell'URL). –
Ahh ok, grazie. L'ho cambiato nel modo in cui mi hai suggerito e funziona. – Patrick