Domanda

Come posso generare URL amichevoli all'interno di ASP.NET MVC Framework? Ad esempio, abbiamo un URL simile al seguente:

http://site/catalogue/BrowseByStyleLevel/1

L'1 è l'ID del livello di studio (superiore in questo caso) per navigare, ma mi piacerebbe riformattare l'URL nello stesso modo in cui StackOverflow lo fa.

Ad esempio, questi due URL ti porteranno nello stesso posto:

  

https://stackoverflow.com/questions/119323/nested-for-loops -in-diverse-lingue

     

https://stackoverflow.com/questions/119323/

MODIFICA: La parte amichevole dell'URL viene definita lumaca .

È stato utile?

Soluzione

Esistono due passaggi per risolvere questo problema. Innanzitutto, crea una nuova rotta o modifica la rotta predefinita per accettare un parametro aggiuntivo:

routes.MapRoute(  "Default", // Route name
                   "{controller}/{action}/{id}/{ignoreThisBit}", 
                   new { controller = "Home", 
                         action = "Index", 
                         id = "",
                         ignoreThisBit = ""}  // Parameter defaults )

Ora puoi digitare quello che vuoi alla fine del tuo URI e l'applicazione lo ignorerà.

Quando esegui il rendering dei link, devi aggiungere il " friendly " testo:

<%= Html.ActionLink("Link text", "ActionName", "ControllerName",
                    new { id = 1234, ignoreThisBit="friendly-text-here" });

Altri suggerimenti

Ecco come ho implementato l'URL slug sulla mia applicazione. Nota: il Maproute predefinito non deve essere modificato e anche i percorsi vengono elaborati nell'ordine in cui vengono aggiunti all'elenco dei percorsi.

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home",
          action = "Index",
          id = UrlParameter.Optional
    } // Parameter defaults
);
routes.MapRoute("Place", "{controller}/{action}/{id}/{slug}", new { controller = "Place", action = "Details", id = UrlParameter.Optional,slug="" });

hai un percorso su global.asax

  routes.MapRoute(
                    "Default", // Route name
                    "{controller}/{action}/{id}", // URL with parameters
                    new { controller = "Home", action = "Index", id = ""} 
                    // Parameter defaults )

puoi definire il tuo percorso come:

controller è la classe cs all'interno della cartella controller.

puoi definire il tuo id - con il nome che scegli.

il sistema passerà il valore al metodo actionResult.

puoi leggere ulteriori informazioni su questo passaggio qui: http: // www.asp.net/learn/mvc/tutorial-05-cs.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top