我正在研究一个应该扫描整个html视图的类,解析它,并替换DOM中的一些元素。为此我决定创建一个自定义RazorView并覆盖RenderView方法:我调用base.RenderView来填充编写器,然后获取其中的字符串,解析它,并最终改变我所需要的一切。
但之后我应该把新字符串放回到编写器中以便渲染它。我无法把它放在哪里。有线索吗?
我应该改写Render方法吗?
答案 0 :(得分:1)
我找到了解决方案:
protected override void RenderView(ViewContext viewContext, TextWriter writer, object instance)
{
//Create a temporary writer
TextWriter w = new StringWriter();
//And call the base method with it
base.RenderView(viewContext,w,instance);
//Now I get the HTML from the temp writer
var html = w.ToString();
//Do my things and change the HTML
//And finally write the changes back to the main writer
writer.Write(html);
}
说实话,它比这更复杂,但这是我开始的基础。