我们从客户端提供HTML'包装'文件,我们需要将内容插入,然后呈现HTML。
在我们插入内容的HTML渲染之前,我需要在客户端包装器的<head>
部分添加一些标签,例如对脚本文件,css和一些元标记的引用。
所以我正在做的是
string html = File.ReadAllText(wrapperLocation, Encoding.GetEncoding("iso-8859-1"));
现在我有完整的HTML。然后,我在该字符串中搜索预定义的内容,并将我们的内容插入到该字符串中,并进行渲染。
如何创建HTML文档的实例并根据需要修改<head>
部分?
编辑:我不想引用System.Windows.Forms
,因此WebBrowser不是一个选项。
答案 0 :(得分:1)
我自己没有尝试过这个库,但这可能适合这个账单:http://htmlagilitypack.codeplex.com/
答案 1 :(得分:1)
您可以使用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");
只需选择头部并添加即可。
答案 2 :(得分:0)
我使用WebBrowser控件作为主机,并通过其Document属性导航/更改文档。
上面链接中有很好的文档和示例。
答案 3 :(得分:0)
您使用的是MasterPages吗? 这似乎是最明显的用途。
MasterPage有&lt; asp:ContentPlaceHolder&gt;用于您希望内容去的所有点。
在我们的应用程序中,我们有一个基本控制器,它覆盖所有的View()重载,以便从web.config中读取MasterPage的名称。这样自定义应用程序就像新的MasterPage一样简单,从控制器的角度来看,没有代码更改,因为我们的基类处理MasterPage / web.config的东西。
答案 4 :(得分:-1)
我无法获得自动解决方案,所以它归结为黑客:
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>");
}