Question

Comment générer des URL conviviales dans le cadre ASP.NET MVC? Par exemple, nous avons une URL ressemblant à ceci:

http://site/catalogue/BrowseByStyleLevel/1

Le 1 est l'identifiant du niveau d'étude (supérieur dans ce cas), mais je souhaite reformater l'URL de la même manière que StackOverflow le fait.

Par exemple, ces deux URL vous mèneront au même endroit:

  

https://stackoverflow.com/questions/119323/nested-for-loops -en-langues-différentes

     

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

EDIT: la partie conviviale de l'URL est appelée slug .

Était-ce utile?

La solution

Il existe deux étapes pour résoudre ce problème. Commencez par créer une nouvelle route ou modifiez la route par défaut pour accepter un paramètre supplémentaire:

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

Vous pouvez maintenant saisir ce que vous voulez à la fin de votre URI et l'application l'ignorera.

Lorsque vous effectuez le rendu des liens, vous devez ajouter le paramètre "convivial". texte:

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

Autres conseils

C’est ainsi que j’ai implémenté l’URL slug sur mon application. Remarque: Maproute par défaut ne doit pas être modifié et les itinéraires sont également traités dans l'ordre dans lequel ils sont ajoutés à la liste des itinéraires.

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="" });

vous avez un itinéraire sur le global.asax

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

vous pouvez définir votre propre itinéraire, par exemple:

contrôleur est la classe cs dans le dossier des contrôleurs.

vous pouvez définir votre identifiant - avec le nom que vous choisissez.

le système transmettra la valeur à votre méthode actionResult.

vous pouvez en savoir plus sur cette étape ici: http: // www.asp.net/learn/mvc/tutorial-05-cs.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top