Sto tentando di seguire una convenzione utilizzata da molti siti che passano in argomenti con più barre in avanti, invece di utilizzare il modello GET.ASP.NET MVC 4 Parametri separati da barre in avanti "/" non passando correttamente args
Cioè, sto cercando di consumare un URL del tipo:
http://www.foo.bar/controller/action?arg1=a&arg2=b&arg3=c
in questo modo:
http://www.foo.bar/controller/action/a/b/c
Io attualmente ho questo (per lo più) di lavoro, utilizzando il seguente:
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Sandbox",
url: "Sandbox/{action}/{*args}",
defaults: new { controller = "Sandbox", action = "Index", args = UrlParameter.Optional }
);
}
Tuttavia, se passo in qualcosa come
http://www.foo.bar/Sandbox/Index/a
o
http://www.foo.bar/Sandbox/Index/a/
Il controllore e azione sono opportunamente chiamati:
public ActionResult Index(string args)
{
return View();
}
ma args è nullo.
Tuttavia, se mi passate in qualcosa di simile:
http://www.foo.bar.com/Sandbox/Index/a/b
Poi args è "A/B", se lo desideri.
Ho setacciato SO e il resto del web, ma non riesco a trovare la soluzione.
C'è qualcosa di ovvio che mi manca per correggere questo comportamento?
Sto cercando la terminologia sbagliata?
Nota: sono stato in grado di riprodurre questo problema con una nuovissima applicazione ASP.NET utilizzando l'autenticazione di Windows. Tutto ciò che è stato fatto:
- Creare un'applicazione ASP.NET in VS 2015
- Scegli MVC
- Clicca sui cambiamenti Autenticazione
- Selezionare Windows
- Aggiungere quanto sopra mappa del percorso per RouteConfig.cs
- Creare SandboxController.cs e aggiungere il parametro args all'indice
- Creare la vista Index.cshtml
- Repro il problema utilizzando http://localhost:55383/Sandbox/Index/a
- Repro il comportamento previsto utilizzando http://localhost:55383/Sandbox/Index/a/b
Qualsiasi aiuto è molto apprezzato. Grazie! Domanda simile, ma non mi aiuta: URLs with slash in parameter?
mostrare tutti i tuoi percorsi e l'ordine –
Sì. L'ho aggiunto. E mi sento piuttosto stupido adesso. Mi resi conto che il Default veniva chiamato per primo. – Thumper