Auf einer ASP.NET MVC (Beta)-Seite, die ich entwickle, werden manchmal Aufrufe von ActionLink URLs mit Abfragezeichenfolgen an mich zurückgegeben. Ich habe die Umstände isoliert, die dieses Verhalten hervorrufen, aber ich verstehe immer noch nicht, warum, anstatt eine saubere URL zu erzeugen, ein Abfragezeichenfolgenparameter verwendet wird. Ich weiß, dass sie funktionell das gleiche sind, aber für die Konsistenz (und das Aussehen) der URLs ist dies nicht das, was ich will.
Hier sind meine Routen:
routes.MapRoute(
"Photo Gallery Shortcut",
"group/{groupname}",
new { controller = "Photos", action = "All", Id = "" });
routes.MapRoute(
"Tagged Photos", //since the Tagged action takes an extra parameter, put it first
"group/{groupname}/Photos/Tagged/{tagname}/{sortby}",
new { controller = "Photos", action = "Tagged", Id = "", SortBy = "" });
routes.MapRoute(
"Photo Gallery", //since the Gallery's defualt action is "All" not "Index" its listed seperatly
"group/{groupname}/Photos/{action}/{sortby}",
new { controller = "Photos", action = "All", Id = "", SortBy = "" });
routes.MapRoute(
"Group", //<-- "Group" Category defined above
"group/{groupname}/{controller}/{action}/{id}",
new {controller = "Photos", action = "Index", Id = ""});
Jetzt tritt das Problem nur auf, wenn ich die durch die Route mit dem Namen "Tagged Photos" beschriebene Ansicht betrachte und ActionLink über ausführe:
Html.ActionLink<PhotosController>(p => p.All((string)ViewData["group"], ""), "Home")
Daraus ergibt sich die URL:
http://domain/group/GROUPNAME?sortBy=
In jeder anderen Ansicht lautet die URL wie folgt:
http://domain/group/GROUPNAME
Ich habe Phil's runtergezogen ASP.NET-Routing-Debugger und alles scheint in Ordnung zu sein. Hier bin ich ratlos. Irgendwelche Ideen?