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 ? :cry:
Version imprimable
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 ? :cry:
<iframe src="lefichier.htm"></iframe>
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:<iframe id="iframeTest" runat="server"></iframe>
Code: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:
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:
1
2 MyControl.FindControl("ID");
Code:
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); } } } }
super , ca repond à mes soucis !, merci à vous :yaisse2: