Se ci si dirige verso il seguente URL StackOverflow http://stackoverflow.com/questions/15532493
viene automaticamente aggiunto con il titolo della questione in questo modo:StackOverflow URL stile (personalizzazione URL in uscita)
http://stackoverflow.com/questions/15532493/mvc-custom-route-gives-404
Cioè, posso digitare l'URL nel mio browser senza il titolo della domanda e viene aggiunto automaticamente.
Come posso ottenere lo stesso risultato nella mia applicazione? (Nota: sono consapevole che il titolo della domanda non ha effetto sulla pagina che viene renderizzata).
Ho un controller chiamato Users
con un metodo di azione denominato Details
. Ho definito il seguente percorso:
routes.MapRoute("UserRoute",
"Users/{*domain}",
new { controller = "User", action = "Details" },
new { action = "^Details$" });
Poiché si tratta di un'applicazione Intranet, l'utente è autenticato rispetto al proprio account Windows. Voglio aggiungere il dominio e il nome utente all'URL.
Se ho generato l'URL nella vista in questo modo:
@Html.ActionLink("Model.UserName", "Details", "User", new { domain = Model.Identity.Replace("\\", "/") })
ottengo un URL che assomigliano a questo:
dominio/Utenti/ACME/jsmith
Tuttavia, se l'utente naviga verso l'URL Domain/Users/
utilizzando la barra di navigazione del browser, corrisponde alla rotta e l'utente viene indirizzato alla pagina dei dettagli dell'utente. Vorrei aggiungere lo ACME/jsmith/
all'URL in questo caso.
La ricerca che ho fatto finora indica che potrei avere per implementare un oggetto percorso personalizzato derivando dalla RouteBase
e attuare le GetRouteData
e GetVirtualPath
metodi, ma non so da dove cominciare con questo (la documentaiton MSDN è molto sottile) .
Quindi quello che vorrei sapere è:
- Esiste un modo per raggiungere questo senza l'attuazione di un percorso personalizzato?
- In caso contrario, qualcuno sa di buone risorse per iniziare a implementare un percorso personalizzato?
- Se è richiesta un'implementazione personalizzata del percorso, come si ottiene l'informazione che presumibilmente deve essere caricata dal database? Va bene fare in modo che un servizio effettui chiamate al database in una rotta (che a me sembra sbagliato) o le informazioni possono essere passate al percorso dal framework MVC?
http://stackoverflow.com/questions/25259/how-does-stackoverflow-generate-its-seo-friendly-urls –
@ Soner Gönül - La domanda collegata mostra 'how-to-generate-stringhe-like-this' che non è quello che sto chiedendo. Voglio aggiungere i valori all'URL se l'utente inserisce solo il bit 'Dominio/Utenti /' nella barra di navigazione del browser. –
Non è in realtà un duplicato poiché non sta chiedendo come generare la stringa del titolo, ma come reindirizzare sempre a una pagina in cui il titolo è nell'URL anche se l'utente è arrivato semplicemente inserendo l'id – tucaz