Je voudrais lors d'un clique dans un menu, charger un fichier html (qui se trouve dans le dossier de site web) dans un conteneur de ma page.
quel conteneur dois je utiliser (panel ?), et comment charger un fichier html dedans ?![]()
Je voudrais lors d'un clique dans un menu, charger un fichier html (qui se trouve dans le dossier de site web) dans un conteneur de ma page.
quel conteneur dois je utiliser (panel ?), et comment charger un fichier html dedans ?![]()
oui merci, cependant je suis coté serveur et utilise les controles asp.net ...
Cela n'empêche rien.
Tu peux très bien manipuler des contrôles html dans ton code behind. Pour cela, il te suffit de rajouter l'attribut runat="server". Exemple :
Et dans ton code behind, tu pourras écrire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part <iframe id="iframeTest" runat="server"></iframe>
Code : Sélectionner tout - Visualiser dans une fenêtre à part iframeTest.Attributes.Add("src", "http://www.developpez.com");
Pas oublier le protected HtmlGenericControl iframeTest; dans le code behind.
Les frames, ca suxxx.
Tu prends un FileReader, tu lis le contenu de ton fichier html et tu l'injectes dans un asp:Literal (literal.text)
Si l'objet de la question est charger tout un document html (avec balise html / head / body), les réponses ci-dessus me semblent y répondre.
En revanche si la question tient au fait de charger un fragment de code html au sein d'un contôle déjà existant coté serveur :
L'objet Page dispose d'une méthode LoadControl très intéressante permetant de charger un fichier (ascx). C'est un contrôle que l'on recoit en retour :
Le plus formidable c'est que toute balise html disposant d'un ID="" et runat="server" peut ensuite être retrouvée de la façon suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 System.Web.UI.Control MyControl = Page.LoadControl("~/doc.html");
Mais bon histoire d'être sympa voici le code d'un implémentation capable de charger au choix, un UserWebControl (ascx) ou un fichier html ou un fichier txt. La source est en téléchargement ci-après. N'hésitez pas à jouer avec, à tester ce qu'il se passe avec les différents boutons, cela donne des idées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MyControl.FindControl("ID");
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
45
46
47
48
49
50
51
52
53
54
55 using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; namespace Demo { [System.Web.UI.ParseChildren(false)] [System.Web.UI.PersistChildren(false)] publicclassHtmlPanel : System.Web.UI.Control, INamingContainer { privateconststring VS_HTMLFILE = "HtmlFile"; [System.ComponentModel.DefaultValue("")] [System.Web.UI.PersistenceMode(PersistenceMode.Attribute)] [System.ComponentModel.Editor(typeof(System.Web.UI.Design.UrlEditor), typeof(System.Drawing.Design.UITypeEditor))] publicstring HtmlFile { get { return (string)(ViewState[VS_HTMLFILE] != null ? ViewState[VS_HTMLFILE] : string.Empty); } set { ViewState[VS_HTMLFILE] = value; Controls.Clear(); } } protectedoverridevoid CreateChildControls() { if (HtmlFile != string.Empty) { string PhysicalFilePath = Page.Server.MapPath(HtmlFile); string PhysicalFilePathExt = System.IO.Path.GetExtension(PhysicalFilePath).ToLower(); if (PhysicalFilePathExt == ".ascx") { Controls.Add(Page.LoadControl(HtmlFile)); } elseif (PhysicalFilePathExt == ".html" || PhysicalFilePathExt == ".htm" || PhysicalFilePathExt == ".txt") { Controls.Add(newLiteralControl(System.IO.File.ReadAllText(PhysicalFilePath))); } } } publicoverridevoid RenderControl(HtmlTextWriter writer) { if (DesignMode) { writer.Write(HtmlFile); } else { if (Controls.Count == 0 && HtmlFile != string.Empty) CreateChildControls(); base.RenderControl(writer); } } } }
Partager