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:
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:
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
Sie könnten es clientseitig mit Javascript machen:
%Vor%Einziger Nachteil ist, dass nicht alle Browser dies unterstützen.
Tags und Links asp.net-mvc-3 c# url asp.net-routing