Auf einer ASP.NET MVC (Beta) -Site, die ich gerade entwickle, rufen manchmal Aufrufe von ActionLink URLs zurück, die Abfragezeichenfolgen enthalten. Ich habe die Umstände isoliert, die dieses Verhalten hervorbringen, aber ich verstehe immer noch nicht, warum, statt eine saubere URL zu erzeugen, sie sich dafür entscheidet, einen Abfrage-String-Parameter zu verwenden. Ich weiß, dass sie funktional gleich sind, aber aus Gründen der Konsistenz (und des Aussehens) der URLs ist das nicht das, was ich möchte.
Hier sind meine Routen:
%Vor%Jetzt tritt das Problem nur auf, wenn ich die Ansicht betrachte, die von der Route namens "Tagged Photos" beschrieben wird, und ActionLink über:
ausführe %Vor%Was die URL erzeugt:
%Vor%Aus jeder anderen Ansicht wird folgende URL erzeugt:
%Vor%Ich habe Phils ASP.NET Routing-Debugger und alles heruntergerissen erscheint in der Reihenfolge. Dieser hat mich ratlos gemacht. Irgendwelche Ideen?
Nicht sicher, warum verschiedene Ansichten unterschiedliche URLs erzeugen.
Aber Sie können diesen sortBy-Parameter loswerden, indem Sie der ersten Route einen Standardwert zuweisen.
neu {sortBy=""}
Wenn sortBy während der Generierung mit dem Standardwert übereinstimmt, überspringt die Routen-Engine diesen Parameter (falls er in der Abfragezeichenfolge enthalten ist).
Sie müssen hier benannte Routen verwenden, keine Aktionsrouten, da Routing in ASP.NET funktioniert, weil es "first match", nicht "best match" ist.
Ich denke, es ist deine erste Route. Es hat auch die Aktion Alle. Und da das sortby nicht angegeben wird, wird es als ein Querystring-Parameter
verfügbar gemachtDies funktioniert immer noch mit der Aktionsmethode 'All' auf dem PhotosController, weil es nur den Parameter sortby mit dem Abfragezeichenfolgenwert füllt.
Führt der Route Debugger die 3. Route oder die 1. Route aus?
Tags und Links asp.net-mvc c# asp.net routing