questa chiamata:
http;//localhost/Controller/Action/1 (sono sicuro tu volessi scrivere http://localhost/Home/Index/1)
è possibile farla solo perche nelle regole di routing hai la regola:
codice:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
se cambi il nome del parametro la regola viene applicata ma viene valorizzato il parametro id che non è presente tra i parametri della action mentre non viene bindato nulla al parametro idt. L'eccezione viene sollevata perche idt è un tipo value e non puo non contenere un valore. Per verificare quanto dico basta effettuare la chiamata GET 'al naturale':
http://localhost/Home/Index/?idt=1
e vedrai che funziona regolarmente.
Per risolvere il problema devi creare una regola di routing per il parametro idt. Per esempio:
codice:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{idt}",
defaults: new { controller = "Home", action = "Index", idt = UrlParameter.Optional }
);