IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Routing avec framework 3.5


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Par défaut Routing avec framework 3.5
    Bonjour,

    Je suis actuellement en train de développer une appli web (C# framework 3.5) pour des écoles. Un seul et même site pour toutes les écoles. J'identifie l'école qui veut se connecter via l'url. Sur la page de login je me connecte avec l'url http://nomDeDomaine/nomEcole/login
    J'ai réussi à router mon url vers la page login.aspx en ajoutant le mappage suivant: routes.MapPageRoute("login", "{ecole}/login", "~/login.aspx");

    Mon problème est le suivant : J'aimerais pouvoir garder cette logique d'url http://nomDeDomaine/nomEcole/nomDeLaPage
    mais je ne sais pas comment faire
    Avant je faisais un Response.Redirect("~/accueil.aspx");
    Maintenant je voudrais faire un truc du genre : Redirect("~/nomEcole/accueil"); en ajoutant un mappage: routes.MapPageRoute("accueil", "{ecole}/accueil", "~/accueil.aspx");

    Je ne sais pas si j'ai été clair... Si quelqu'un peut m'aider?

    Merci

  2. #2
    Nouveau candidat au Club
    Femme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Par défaut Début de réponse
    Re,

    Je vois que mon problème n'inspire personne... Cependant j'ai continué a avancer dans mes recherches et maintenant j'arrive à passer d'une page à l'autre en gardant mon nom d'école dans l'url . Pour se faire j'ai remplacé mes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Response.redirect("~/maPage.aspx")
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RouteValueDictionary parameters=new RouteValueDictionary { 
    { "ecole", nom_ecole } 
    };
    VirtualPathData vPath= RouteTable.Routes.GetVirtualPath(null,"accueil",parameters);
    Response.Redirect(vPath.VirtualPath);
    J'ai récupéré au préalable le nom de l'école en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      String  nom_ecole = ((System.Web.Routing.RouteData)HttpContext.Current.Items["RouteData"]).Values["ecole"].ToString();
    "accueil" faisant référence au nom du routage que j'ai ajouter dans mon global.asax avec la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    routes.MapPageRoute("accueil", "{ecole}/accueil", "~/accueil.aspx");
    Maintenant il me reste à savoir comment faire la même chose mais en passant des paramétres dans l'url? autrement dit comment remplacer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Response.Redirect("~/accueil.aspx?user=toto");

  3. #3
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Le routage repose sur un principe assez simple de correspondance entre une URL et un IRouteHandler.

    Pour ce faire tu dois enregistrer les "routes" (les URL) dans la table de routage au moment du démarrage de ton application (sur le Application_Start du Global.asax). Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    void Application_Start(object sender, EventArgs e)
    {
        RegisterRoutes(RouteTable.Routes);
    }
     
    private void RegisterRoutes(RouteCollection routes)
    {
        routes.RouteExistingFiles = false;
     
        // URL: /
        routes.Add("home", 
            new Route(null,
            new HomeRouteHandler()
        ));
     
       // URL: /fr-fr/
       routes.Add("localized", new Route("{p0}",
           new RouteValueDictionary { { "p0", string.Empty } },
           new RouteValueDictionary { { "p0", "[a-zA-Z]{2}-[a-zA-Z]{2}" } },
           new LangageRouteHandler()
       ));
     
       // URL: /profils/
       routes.Add("profils", new Route("{p0}",
           new RouteValueDictionary { { "p0", string.Empty } },
           new RouteValueDictionary { { "p0", "profils" } },
           new ProfilsRouteHandler()
       ));
     
    }
    Le Handler "HomeRouteHandler":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class HomeRouteHandler : IRouteHandler
    {
        public IHttpHandler GetHttpHandler(RequestContext requestContext)
        {
            Default page = (Default)BuildManager.CreateInstanceFromVirtualPath(Constants.ControlsPath.Default, typeof(Default));
     
            return page;
        }
    }
    Dès qu'une URL dont le schéma enregistré est appelée le Handler associé est utilisé. A toi ensuite de traiter l'URL pour charger la bonne page. Tu ne devrais plus avoir besoin de "Response.Redirect" mais plutôt "Response.RedirectToRoute".

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

Discussions similaires

  1. Cron: executer un script php avec framework
    Par thibaut06 dans le forum Administration système
    Réponses: 2
    Dernier message: 01/05/2008, 14h55
  2. setup avec framework 2.0
    Par myclub dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/07/2007, 12h03
  3. Connexion postGreSQL avec framework .NET
    Par Gobouz dans le forum Accès aux données
    Réponses: 2
    Dernier message: 22/06/2007, 10h43
  4. Les objets COM avec Framework 2.0
    Par SOPRA-Eherve dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 06/03/2007, 22h22
  5. Connexion TelNet avec FrameWork
    Par BenGlut dans le forum Delphi .NET
    Réponses: 1
    Dernier message: 21/02/2006, 15h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo