Stackoverflow-Stil-URL (Anpassen der ausgehenden URL)

10

Wenn ich zur folgenden Stackoverflow-URL http://stackoverflow.com/questions/15532493 navigiere, wird automatisch der Titel der Frage wie folgt angehängt:

http://stackoverflow.com/questions/15532493/mvc-custom-route-gives-404

Das heißt, ich kann die URL in meinen Browser eingeben ohne den Titel der Frage und es wird automatisch angehängt.

Wie würde ich in meiner Bewerbung dasselbe erreichen? (Hinweis: Mir ist bewusst, dass der Fragetitel keinen Einfluss auf die Seite hat, die gerendert wird).

Ich habe einen Controller namens Users mit einer Aktionsmethode namens Details . Ich habe folgende Route definiert:

%Vor%

Da es sich um eine Intranetanwendung handelt, wird der Benutzer mit seinem Windows-Konto authentifiziert. Ich möchte die Domäne und den Benutzernamen an die URL anhängen.

Wenn ich die URL in der Ansicht wie folgt erzeuge:

%Vor%

Ich bekomme eine URL, die so aussieht:

  

Domäne / Benutzer / ACME / jsmith

Wenn der Benutzer jedoch über die Navigationsleiste des Browsers zur URL Domain/Users/ navigiert, stimmt er mit der Route überein, und der Benutzer wird zur Seite mit den Benutzerdetails weitergeleitet. Ich möchte in diesem Fall ACME/jsmith/ an die URL anhängen.

Die bisherigen Untersuchungen zeigen, dass ich möglicherweise ein benutzerdefiniertes Routenobjekt implementieren muss, indem ich von RouteBase abgeleitet bin und die Methoden GetRouteData und GetVirtualPath implementiert habe, aber ich weiß nicht, wo ich damit anfangen soll (msdn Dokumentation ist sehr dünn).

Also was ich gerne wissen möchte ist:

  1. Gibt es eine Möglichkeit, dies zu erreichen, ohne eine benutzerdefinierte Route zu implementieren?
  2. Wenn nicht, kennt jemand gute Ressourcen, um mit der Implementierung einer benutzerdefinierten Route zu beginnen?
  3. Wenn eine benutzerdefinierte Routenimplementierung erforderlich ist, wie wird es bei den Informationen ankommen, die vermutlich aus der Datenbank geladen werden müssen? Ist es in Ordnung, wenn ein Dienst auf einer Route Datenbankaufrufe durchführt (was mir falsch erscheint) oder kann die Information vom MVC-Framework an die Route weitergeleitet werden?
Benjamin Gale 09.04.2013, 14:09
quelle

2 Antworten

3

Es ist eigentlich ziemlich einfach. Da der Titel nur aus SEO-Gründen da ist, muss man nicht auf die eigentliche Frage kommen, so dass der Fragen-Controller (in SO-Fall) die richtige Frage anhand der ID (in der URL) lädt und den Benutzer mit einem 301 umleitet Statuscode.

Sie können dieses Verhalten mit jedem Web Inspector sehen

    
tucaz 09.04.2013, 18:25
quelle
1

Sie könnten es clientseitig mit Javascript machen:

%Vor%

Einziger Nachteil ist, dass nicht alle Browser dies unterstützen.

    
Joey Gennari 09.04.2013 14:20
quelle