Gdybym przejdź do następującego stackoverflow URL http://stackoverflow.com/questions/15532493
jest automatycznie dopisywana tytule pytanie tak:Stackoverflow styl URL (dostosowanie wychodzącego URL)
http://stackoverflow.com/questions/15532493/mvc-custom-route-gives-404
Oznacza to, że mogę wpisać adres URL w mojej przeglądarce bez numeru, a tytuł pytania jest dołączany automatycznie.
W jaki sposób chciałbym osiągnąć ten sam wynik w mojej aplikacji? (Uwaga: wiem, że tytuł pytania nie ma wpływu na renderowaną stronę).
Mam kontroler o nazwie Users
z metodą działania o nazwie Details
. Mam zdefiniowaną następującą trasę:
routes.MapRoute("UserRoute",
"Users/{*domain}",
new { controller = "User", action = "Details" },
new { action = "^Details$" });
Ponieważ jest to aplikacja intranetowa, użytkownik jest uwierzytelniany na swoim koncie Windows. Chcę dołączyć domenę i nazwę użytkownika do adresu URL.
Gdybym wygenerować URL w widoku tak:
@Html.ActionLink("Model.UserName", "Details", "User", new { domain = Model.Identity.Replace("\\", "/") })
uzyskać adres URL, który wygląda tak:
domena/Users/ACME/jsmith
Jeśli jednak użytkownik przejdzie pod adres URL Domain/Users/
za pomocą paska nawigacyjnego przeglądarki, dopasuje trasę, a użytkownik zostanie przeniesiony na stronę szczegółów użytkownika. Chciałbym dodać w tym przypadku adres URL ACME/jsmith/
.
Badania zrobiłem do tej pory wskazują, że mogę mieć do realizacji niestandardowych obiektów trasy poprzez wyprowadzenie z RouteBase
i wdrażanie metod GetRouteData
i GetVirtualPath
ale nie wiem od czego zacząć z tym (the documentaiton MSDN jest bardzo cienka) .
Więc co chciałbym wiedzieć:
- Czy istnieje sposób na osiągnięcie tego celu bez realizacji niestandardowych trasy?
- Jeśli nie, czy ktoś wie o dobrych zasobach, które pozwolą mi rozpocząć wdrażanie niestandardowej trasy?
- Jeśli wymagana jest niestandardowa implementacja trasy, w jaki sposób uzyskuje się informacje, które prawdopodobnie muszą zostać załadowane z bazy danych? Czy jest w porządku, aby usługa wywoływała bazy danych na trasie (co wydaje mi się błędne) lub czy informacje mogą być przekazywane do trasy przez platformę MVC?
http://stackoverflow.com/questions/25259/how-does-stackoverflow-generate-its-seo-friendly-urls –
@ Soner Gönül - powiązane pytanie pokazuje "jak wygenerować-łańcuchy-jak-to", co nie jest tym, o co proszę. Chcę dodać wartości do adresu URL, jeśli użytkownik wprowadzi tylko bit 'Domain/Users /' na pasku nawigacyjnym przeglądarki. –
To właściwie nie jest duplikat, ponieważ nie pyta, JAK wygenerować ciąg znaków, ale zamiast tego, jak zawsze przekierowywać na stronę, na której tytuł znajduje się w adresie URL, nawet jeśli użytkownik dostał się tam po prostu podając identyfikator – tucaz