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 :

ashx LoadUserControl et paramétres [Débutant]


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 213
    Points : 111
    Points
    111
    Par défaut ashx LoadUserControl et paramétres
    Bonjour à tous,

    je patauge un peu avec mon application. Mon problème est que je passe par de l'ajax pour charger des User Control en cascade dans des divs.

    Dans un fichier ashx, j'arrive bien à loader mes différents userControl via la méthode Page.LoadControl("monfihier.ascx") et les afficher à l'écran.

    Dans mon contexte, j'ai une queryString avec mes paramètres. Le hic c'est que je n'arrive pas à les transmettre au usercontrol.

    Sachant que le nombre de paramètres n'est pas déterminer à l'avance. La seule que je sais c'est que ce sont des strings.

    Par avance je vous remercie de votre aide.

    Voici le code de la page ashx qui fonctionne sans le passage de paramètres.
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
     Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
     
            context.Response.ContentType = "text/html"
     
     
                Dim ctrl As String = context.Request("control")
                Dim parametres As String = context.Request.QueryString
     
     
                If (Not String.IsNullOrEmpty(ctrl)) Then
                    context.Response.Write(LoadUserControl(ctrl))
                Else
                    ctrl = ""
                End If
    End Sub
     
    Protected Shared Function LoadUserControl(ByVal user_control As String) As String
     
            Dim retour As String = String.Empty
     
            'Verification de l'existance du userControl
            Dim existe As Boolean = System.IO.File.Exists(HttpContext.Current.Server.MapPath(user_control))
            If Not existe Then Return retour
     
     
            Using Page As New Page
                Dim html As HtmlForm = New HtmlForm()
     
                If (user_control.StartsWith("../")) Then user_control = (New Regex("^[\.]{2}")).Replace(user_control, "~")
    Dim uc As UserControl = Page.LoadControl(user_control)
     
     
                Using writer As New StringWriter()
                    html.Controls.Add(uc)
                    Page.Controls.Add(html)
                    HttpContext.Current.Server.Execute(Page, writer, False)
                    retour = writer.ToString()
                End Using
            End Using
     
            Return retour
     
        End Function

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Le problème c'est qu'à la base les Handlers (fichiers .ASHX) ne sont pas censés répondre à ce genre de besoin... Ils permettent de servir autre chose qu'une WebForm classique, c'est-à-dire des flux binaires, ou des flux xml par exemple.

    Donc la question est de savoir pourquoi est-ce que tu passes par un Handler pour faire ça ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 213
    Points : 111
    Points
    111
    Par défaut
    Merci de ta réponse. Je suis passé par là car j'ai un applicatif qui génère des pages aspx et ascx à la volée. Lors de l'appel d'une page aspx, ça composition n'est pas fixe mais dépendante de paramètres dont j'aurais connaissance uniquement lors de l’exécution ou à posterii suite à un click.

    Sinon j'ai trouvé. En fait c'est lié à l'appel du control, il suffit de lui spécifer.
    La solution est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HttpContext.Current.Server.Execute(Page, writer, True)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/09/2013, 14h11
  2. [xmlrad] Pb de paramètre ?
    Par Pm dans le forum XMLRAD
    Réponses: 7
    Dernier message: 07/01/2003, 14h37
  3. [SWT] Problème de paramètre GridData
    Par yolepro dans le forum SWT/JFace
    Réponses: 4
    Dernier message: 06/12/2002, 10h37
  4. passage en paramètre d'un array dynamique 2D
    Par Guigui_ dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2002, 19h47
  5. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24

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