如何以编程方式加载HTML文档以添加到文档的?
我们从客户端提供HTML'wrapper'文件,我们需要将内容插入,然后呈现HTML。如何以编程方式加载HTML文档以添加到文档的<head>?
在插入HTML内容之前,我需要在客户端的包装器的<head>
部分添加一些标签,例如对脚本文件,CSS和一些元标签的引用。
所以我在做什么是
string html = File.ReadAllText(wrapperLocation, Encoding.GetEncoding("iso-8859-1"));
,现在我有完整的HTML。然后,我在该字符串中搜索预定义的内容,然后将我们的内容插入到该字符串中,然后进行渲染。
如何创建HTML文档的实例并根据需要修改<head>
部分?
编辑:我不想引用System.Windows.Forms
所以WebBrowser不是一个选项。
我不能让一个自动化的解决方案这一点,所以它来到了一个黑客:
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>");
}
我还没有尝试过这个库自己,但是这可能会符合该法案:http://htmlagilitypack.codeplex.com/
我这个玩了一段时间,但我无法找到一个方法来插入节点成HtmlDocument ..和HtmlAgilityPack的文档不是很好!不管怎么说,还是要谢谢你 – DaveDev 2010-07-13 15:58:20
您是否在使用MasterPages? 这似乎是他们最明显的用法。
The MasterPage has < asp:ContentPlaceHolder >的所有点你想要的内容去。
在我们的应用程序,我们有一个基本的控制器,它覆盖所有的View()重载,使得它在母版从web.config中读取名称。这样定制应用程序就像新的MasterPage一样简单,并且从控制器的角度来看,没有代码更改,因为我们的基类处理MasterPage/web.config的东西。
您可以使用https://github.com/jamietre/CsQuery来编辑HTML DOM。
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");
只需选择头部并添加到它。
存在于System.Windows.Forms的,所以我并不真的太热衷于引用来自Web项目.. – DaveDev 2010-07-11 14:59:22