Précédent   Forum du club des développeurs et IT Pro > Dotnet > Développement Web avec .NET > ASP.NET MVC
ASP.NET MVC Forum d'entraide sur le développement de site web avec le framework ASP.NET MVC.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 05/12/2012, 17h17   #1
herrspy
Invité régulier
 
Inscription : avril 2010
Messages : 16
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 16
Points : 6
Points : 6
Par défaut [MVC] Parametre optionnel dans les routes

Bonjour à tous,

Voilà je suis sur un projet en MVC, et j'ai personalisé mes routes. Pour le moment, tout se passe bien .

Je voudrais en modifier une pour y inclure un paramètre optionnel et c'est à partir de ce moment, que j'aurai besoin de votre aide car c'est maintenant que ça ne marche plus

Alors voici ma route de base :

Code :
1
2
3
4
 routes.MapRoute(
            name: "Video",
            url: "{lang}/Video/{Name}",
            defaults: new { controller = "View", action = "Read" });
Tout se passe bien, je peux accèder à ma page, par le lien :

Code :
http://localhost/fr/Video/test
Maintenant, je voudrais que mon premier parametre (lang) soit optionnel pour que l'url d'au dessus marche mais que cette url marche aussi :

Code :
http://localhost/Video/test
Donc je modifie ma route en :

Code :
1
2
3
4
 routes.MapRoute(
            name: "Video",
            url: "{lang}/Video/{Name}",
            defaults: new { lang = UrlParameter.Optional,  controller = "View", action = "Read" });
Mon premier lien marche toujours, mais c'est quand je veux y accèder sans mon paramètre langue, que ca ne marche pas.

Je voudrais donc savoir, si c'est possible déja de mettre mon premier parametre en optionnel et si oui, vous avez une piste sur mon erreur ?

Merci d'avance pour l'aide que vous pouvez m'apporter
herrspy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 23h53   #2
redkan
Membre à l'essai
 
Inscription : octobre 2007
Messages : 84
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 84
Points : 20
Points : 20
Bonsoir,

il me semble que seul le dernier paramètre peut être "optional".

Dans ton cas tu dois écrire tes routes de la sorte :

Code :
1
2
3
4
5
6
7
8
9
10
 
 routes.MapRoute(
            name: "Video",
            url: "Video/{Name}",
            defaults: new { controller = "View", action = "Read" });
 
 routes.MapRoute(
            name: "Video",
            url: "{lang}/Video/{Name}",
            defaults: new { controller = "View", action = "Read" });
Et dans le controlleur :

Code :
1
2
3
4
5
6
 
        public ActionResult Read(String lang)
        {
 
            return View();
        }
Le paramètre lang étant null si la requête a pour URL /app/Video/Test.
redkan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 16h30   #3
herrspy
Invité régulier
 
Inscription : avril 2010
Messages : 16
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 16
Points : 6
Points : 6
Merci, je vais tester tout ça
herrspy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 06h37.


 
 
 
 
Partenaires

Hébergement Web