Как программно загрузить документ HTML, чтобы добавить к документу <head>? - PullRequest
1 голос
/ 11 июля 2010

Мы поставляем файлы HTML-обертки от клиента, в которые нам нужно вставить содержимое, а затем отобразить HTML.

Перед тем, как мы отобразим HTML с вставленным содержимым, мне нужно добавить несколько тегов в раздел <head> оболочки клиента, например ссылки на наши файлы сценариев, CSS и некоторые метатеги.

Итак, что я делаю, это

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

и теперь у меня есть полный HTML. Затем я ищу в этой строке заранее определенный контент, вставляю в него наш контент и отображаю его.

Как я могу создать экземпляр HTML-документа и при необходимости изменить раздел <head>?

edit: Я не хочу ссылаться на System.Windows.Forms, поэтому WebBrowser не является опцией.

Ответы [ 5 ]

1 голос
/ 29 августа 2013

Вы можете использовать https://github.com/jamietre/CsQuery для редактирования 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");

Просто выберите голову и добавьте к ней.

1 голос
/ 11 июля 2010

Я сам не пробовал эту библиотеку, но это, вероятно, соответствовало бы требованиям: http://htmlagilitypack.codeplex.com/

0 голосов
/ 15 декабря 2010

Вы используете MasterPages?Это кажется наиболее очевидным из них.

MasterPage имеетДля всех точек, где вы хотите, чтобы контент шел.

В нашем приложении у нас есть базовый контроллер, который переопределяет все перегрузки View (), так что он читает имя MasterPage из Интернета.конфигурации.Таким образом, настроить приложение так же просто, как новый MasterPage, и с точки зрения контроллеров не происходит никаких изменений кода, поскольку наш базовый класс обрабатывает материал MasterPage / web.config.

0 голосов
/ 05 августа 2010

Я не смог получить автоматизированное решение для этого, поэтому дело дошло до взлома:

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 голосов
/ 11 июля 2010

Я использую WebBrowser в качестве хоста и перемещаюсь / изменяю документ через его свойство Document.

Хорошая документация и примеры по ссылке выше.

...