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 :

Problème url rewriting


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Valter
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2008
    Messages : 113
    Par défaut
    Bonjour, je rencontre un léger problème lorsque j'essaie de faire de l'url rewriting sous asp.NET.

    Voici la page Default.aspx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <%@ Register TagPrefix="inc" TagName="inc" Src="inc/head.ascx" %>
    CONTENU -- CONTENU
    <inc:inc ID="inc" runat="server" />
    Et moi ce que j'aimerai faire dans Default.aspx.cs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        protected override void OnInit(EventArgs e)
        {
            string Value = Request.QueryString["name"];
            if (!string.IsNullOrEmpty(Value))
                inc.Src = Value + ".ascx";
            base.OnInit(e);
        }
    évidemment ça ne marche pas car l'attribut .Src est dans le @Register et il n'accepte pas les ID donc je ne sais pas trop comment m'y prendre

    Je ne sais pas si vous comprenez mais j'aimerai modifier le Src du Register dans une fonction C#, merci.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    ça m'étonnerait que ce soit possible...

  3. #3
    Membre confirmé Avatar de Valter
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2008
    Messages : 113
    Par défaut
    Merci de votre réponse tout d'abord, mais j'ai déjà essayé en créant un :
    <div ID="inc" runat="server"></div>
    et en faisant inc.InnerHTML = "<!-- #Include file=\""+ Value +".aspx\" -->";

    mais sans plus de résultat...

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Valter Voir le message
    Merci de votre réponse tout d'abord, mais j'ai déjà essayé en créant un :
    <div ID="inc" runat="server"></div>
    et en faisant inc.InnerHTML = "<!-- #Include file=\""+ Value +".aspx\" -->";

    mais sans plus de résultat...
    Cette méthode n'est pas possible : innerHTML doit contenir de l'HTML, pas de l'ASP.NET. Le contenu de innerHTML ne sera jamais interprété par le serveur.

    On ne peut pas changer dynamiquement le contenu des directives ASP.NET (les balises <%@ ... %>). Il faut utiliser une autre approche. Si je comprends bien, tu veux utiliser tel ou tel contrôle en fonction de la valeur d'un paramètre "name" passé en query string ? Dans ce cas, tu peux mettre dans ta page un contrôle PlaceHolder, auquel tu ajouteras un contrôle en fonction de la variable "name" :

    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
        protected override void OnInit(EventArgs e)
        {
            string Value = Request.QueryString["name"];
            if (Value.Equals("Control1"))
            {
                Control1 ctl = new Control1();
                placeHolder1.Controls.Add(ctl);
            }
            else if (Value.Equals("Control2"))
            {
                Control2 ctl = new Control2();
                placeHolder1.Controls.Add(ctl);
            }
            else ...
     
            base.OnInit(e);
        }
    Evidemment tu peux rendre ça un peu plus générique en utilisant la réflexion...

  5. #5
    Membre confirmé Avatar de Valter
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2008
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2008
    Messages : 113
    Par défaut
    Alors j'ai essayé en nommant un placeHolder "body", et en mettant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            if (Value == "page")
            {
                Control ctl = new Control();
                body.Controls.Add(ctl);
            }
    Mais je ne sais pas comment 'inclure' la page dans ce script.

    Merci beaucoup,

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Je comprends pas trop ce que tu fais là...
    C'est pas une instance de Control qu'il faut créer, mais une instance du type de contrôle dont tu as besoin. Par exemple si tu veux intégrer dans la page le contrôle défini dans head.ascx (comme dans ton exemple de départ), il faut faire new head()

Discussions similaires

  1. Problème url rewriting
    Par Generation-Web dans le forum Apache
    Réponses: 4
    Dernier message: 21/11/2008, 02h22
  2. problème URL Rewriting
    Par moxyy dans le forum Apache
    Réponses: 7
    Dernier message: 07/11/2008, 11h53
  3. Problèmes URL Rewriting
    Par mystar dans le forum Apache
    Réponses: 1
    Dernier message: 13/11/2007, 11h06
  4. [URL Rewriting] Problème URL Rewriting -> CSS
    Par Cartman.inc dans le forum Apache
    Réponses: 8
    Dernier message: 23/04/2007, 14h29
  5. Problème URL rewriting
    Par Zan dans le forum Apache
    Réponses: 4
    Dernier message: 24/11/2006, 19h04

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