Wenn ich auf die folgenden Stackoverflow URL navigieren http://stackoverflow.com/questions/15532493
es wird automatisch mit dem Titel der Frage, wie so angefügt:Stackoverflow-Stil URL (Customizing scheidende URL)
http://stackoverflow.com/questions/15532493/mvc-custom-route-gives-404
Das heißt, ich die URL eingeben kann in meinen Browser ohne die Frage Titel und es wird automatisch angehängt.
Wie würde ich das gleiche Ergebnis in meiner Anwendung erreichen? (Hinweis: Mir ist bewusst, dass der Fragetitel die gerenderte Seite nicht beeinflusst).
Ich habe einen Controller namens Users
mit einer Aktionsmethode namens Details
. Ich habe die folgende Route definiert:
Da dies eine Intranet-Anwendung ist, wird der Benutzer gegen ihre Windows-Konto authentifiziert. Ich möchte die Domäne und den Benutzernamen an die URL anhängen.
Wenn ich die URL in der Ansicht generieren, wie so:
@Html.ActionLink("Model.UserName", "Details", "User", new { domain = Model.Identity.Replace("\\", "/") })
ich eine URL, die wie folgt aussehen:
Domain/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 die ACME/jsmith/
an die URL anhängen.
Die Forschung, die ich bisher getan haben zeigt, muss ich vielleicht durch Ableiten von RouteBase
eine benutzerdefinierte Route Objekt implementieren und die GetRouteData
und GetVirtualPath
Methoden der Umsetzung, aber ich weiß nicht, wo damit beginnen (die Msdn documentaiton ist sehr dünn) .
Also, was ich möchte wissen, ist:
- Gibt es eine Möglichkeit, dies zu erreichen, ohne eine individuelle Route zu implementieren?
- Wenn nicht, kennt jemand gute Ressourcen, um mich mit der Implementierung einer benutzerdefinierten Route zu beginnen?
- Wenn eine benutzerdefinierte Routenimplementierung erforderlich ist, wie wird es bei der Information ankommen, die vermutlich aus der Datenbank geladen werden muss? Ist es in Ordnung, wenn ein Dienst Datenbankanrufe in einer Route tätigt (was mir falsch erscheint) oder kann die Information vom MVC-Framework an die Route weitergeleitet werden?
http://stackoverflow.com/questions/25259/how-does-stackoverflow-generate-its-seo-friendly-urls –
@ Soner Gönül - Die verlinkte Frage zeigt, wie man "Strings-Like-This" generiert, was ich nicht möchte. Ich möchte die Werte an die URL anhängen, wenn der Benutzer nur das 'Domain/Users'-Bit in der Navigationsleiste des Browsers eingibt. –
Es ist nicht wirklich ein Duplikat, da er nicht fragt, wie man die Title-Zeichenfolge erzeugt, sondern wie man immer zu einer Seite umleitet, wo der Titel in der URL ist, auch wenn der Benutzer nur durch Eingabe der ID – tucaz