OVH Cloud OVH Cloud

MyUserControl = Page.LoadControl()

2 réponses
Avatar
Sébastien Pertus
Pour charger le contenu d'un usercontrol "WebForm.ascx",=20
Il suffit de faire :
myUserControl =3D Page.LoadControl("Webform.ascx")

J'aimerai changer le proc=E9d=E9:

En fait ma page (WebForm.ascx) n'existe pas, elle est=20
stock=E9e en base de donn=E9e.
La solution est donc de cr=E9er un fichier sur le serveur et=20
et de le remplir avec le champ de base de donn=E9e, puis de=20
rappeller la m=E9thode Page.LoadControl()
Exemple :

Dim myTemplate as string
myTemplate =3D "... R=E9cup=E9ration Bdd ..."

Dim myStreamWriter As StreamWriter
If Not File.Exists("WebForm.ascx") Then
myStreamWriter =3D File.CreateText("WebForm.ascx")
Else
myStreamWriter =3D New StreamWriter("WebForm.ascx")
End If

myStreamWriter.Write(myTemplate)
myStreamWriter.Close()

skin =3D Page.LoadControl("WebForm.ascx")


Tout ceci marche. Le seul gros probl=E8me, c'est qu'on est=20
oblig=E9 de laiss=E9 des droits d'=E9criture sur un r=E9pertoire=20
du site, ce qui n'est pas g=E9nial au niveau s=E9curit=E9.

Comment faire pour ne pas avoir =E0 cr=E9er le fichier ?
Le probl=E8me c'est que LoadControl n'accepte comme=20
param=E8tre qu'un chemin Virtuel.
Impossible de lui passer un stream ou quoique ce soit=20
d'autres qui ne soit pas un fichier r=E9=E9l sur le serveur ...

2 réponses

Avatar
Zazar
Bonjour,

Pour charger le contenu d'un usercontrol "WebForm.ascx",
Il suffit de faire :
myUserControl = Page.LoadControl("Webform.ascx")

J'aimerai changer le procédé:

En fait ma page (WebForm.ascx) n'existe pas, elle est
stockée en base de donnée.
La solution est donc de créer un fichier sur le serveur et
et de le remplir avec le champ de base de donnée, puis de
rappeller la méthode Page.LoadControl()
Exemple :

Dim myTemplate as string
myTemplate = "... Récupération Bdd ..."

Dim myStreamWriter As StreamWriter
If Not File.Exists("WebForm.ascx") Then
myStreamWriter = File.CreateText("WebForm.ascx")
Else
myStreamWriter = New StreamWriter("WebForm.ascx")
End If

myStreamWriter.Write(myTemplate)
myStreamWriter.Close()

skin = Page.LoadControl("WebForm.ascx")


Tout ceci marche. Le seul gros problème, c'est qu'on est
obligé de laissé des droits d'écriture sur un répertoire
du site, ce qui n'est pas génial au niveau sécurité.



Vous pouvez mettre le fichier dans un sous-repertoire de votre application.
Il suffit ensuite d'autoriser la lecture et l'écriture dans le
sous-repertoire de votre application, et d'en interdire l'accés (y compris
en lecture) aux utilisateurs internet. Si dans ce répertoire, vous ne
stockez que des fichiers temporaires, ça ne devrait pas poser de pblm de
sécurité.

--
Zazar
Avatar
Sebastioen Pertus
Merci pour la réponse, mais je cherche vraiment à ne pas
avoir besoin de créer des fichiers sur le serveur :)

Je continue à chercher :)

-----Message d'origine-----
Bonjour,

Pour charger le contenu d'un usercontrol "WebForm.ascx",
Il suffit de faire :
myUserControl = Page.LoadControl("Webform.ascx")

J'aimerai changer le procédé:

En fait ma page (WebForm.ascx) n'existe pas, elle est
stockée en base de donnée.
La solution est donc de créer un fichier sur le serveur




et
et de le remplir avec le champ de base de donnée, puis de
rappeller la méthode Page.LoadControl()
Exemple :

Dim myTemplate as string
myTemplate = "... Récupération Bdd ..."

Dim myStreamWriter As StreamWriter
If Not File.Exists("WebForm.ascx") Then
myStreamWriter = File.CreateText("WebForm.ascx")
Else
myStreamWriter = New StreamWriter("WebForm.ascx")
End If

myStreamWriter.Write(myTemplate)
myStreamWriter.Close()

skin = Page.LoadControl("WebForm.ascx")


Tout ceci marche. Le seul gros problème, c'est qu'on est
obligé de laissé des droits d'écriture sur un répertoire
du site, ce qui n'est pas génial au niveau sécurité.



Vous pouvez mettre le fichier dans un sous-repertoire de


votre application.
Il suffit ensuite d'autoriser la lecture et l'écriture


dans le
sous-repertoire de votre application, et d'en interdire


l'accés (y compris
en lecture) aux utilisateurs internet. Si dans ce


répertoire, vous ne
stockez que des fichiers temporaires, ça ne devrait pas


poser de pblm de
sécurité.

--
Zazar


.