2010-07-11 5 views
1

Nous sommes fournis avec des fichiers HTML 'wrapper' du client, dont nous avons besoin d'insérer du contenu dans, puis rendre le code HTML. Avant de rendre le HTML avec notre contenu inséré, j'ai besoin d'ajouter quelques balises à la section <head> de l'emballage du client, comme des références à nos fichiers de script, css et quelques balises META.Comment charger un document HTML par programme afin de l'ajouter à <head> du document?

donc ce que je fais est

string html = File.ReadAllText(wrapperLocation, Encoding.GetEncoding("iso-8859-1")); 

et maintenant j'ai le code HTML complet. Je recherche alors un contenu prédéfini bien dans cette chaîne et insère notre contenu dans celui-ci, et le rends.

Comment puis-je créer une instance d'un document HTML et modifier la section <head> au besoin?

modifier: Je ne veux pas faire référence à System.Windows.Forms afin que WebBrowser ne soit pas une option.

Répondre

-1

je ne pouvais pas obtenir une solution automatisée à cela, il est descendu à un hack:

public virtual void PopulateCssTag(string tags) 
{ 
    // tags is a pre-compsed string containing all the tags I need. 
    this.Wrapper = this.Wrapper.Replace("</head>", tags + "</head>"); 
} 
0

J'utilise le contrôle WebBrowser comme hôte, et de naviguer/de modifier le document dans sa propriété de document.

Belle documentation et échantillons sur le lien ci-dessus.

+2

Cela existe dans System.Windows.Forms, donc je ne suis pas trop désireux de faire référence à cela à partir d'un projet web .. – DaveDev

1

Je n'ai pas essayé cette bibliothèque moi-même, mais ce serait probablement correspondre à la facture: http://htmlagilitypack.codeplex.com/

+1

J'ai joué avec ça pendant un certain temps mais je n'ai pas trouvé de moyen d'insérer des nœuds dans le HtmlDocument .. et la documentation HtmlAgilityPack est pas très bon !! Merci quand même – DaveDev

0

Utilisez-vous MasterPages? Cela semble être l'utilisation la plus évidente d'entre eux.

La MasterPage a < asp: ContentPlaceHolder > pour tous les points où vous voulez que le contenu disparaisse.

Dans notre application, nous avons un contrôleur de base qui remplace toutes les surcharges View() afin qu'il lise au nom de la MasterPage du web.config. De cette façon, la personnalisation de l'application est aussi simple que d'une nouvelle MasterPage et d'un point de vue des contrôleurs, il n'y a aucun changement de code depuis notre classe gère de base les choses MasterPage/web.config.

1

Vous pouvez utiliser https://github.com/jamietre/CsQuery pour modifier un dom html.

var dom = CQ.Create(html); 
var dom = CQ.CreateFromUrl("http://www.jquery.com"); 

dom.Select("div > span") 
.Eq(1) 
.Text("Change the text content of the 2nd span child of each div"); 

Sélectionnez simplement la tête et ajoutez-y.

Questions connexes