在ASP.NET开发中经常会使用到Web控件和HTML控件,如果想通过代码提取这些控件Render到客户端后生成的HTML样式的话可以通过如下的函数得到。
public string RenderHTML(WebControl objWebCtrl)
{
try
{
System.IO.StringWriter sw = new System.IO.StringWriter();
HtmlTextWriter html = new HtmlTextWriter(sw);
objWebCtrl.RenderControl(html);
return sw.ToString();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return "";
}
}
public string RenderHTML(HtmlControl objHtmlCtrl)
{
try
{
System.IO.StringWriter sw = new System.IO.StringWriter();
HtmlTextWriter html = new HtmlTextWriter(sw);
objHtmlCtrl.RenderControl(html);
return sw.ToString();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return "";
}
}但是如果是GridView,可能在输出时会出现如下的提示信息:
'GridView1' 必须置于 runat=server 的标记中。
这需要在代码中增加:
public override void VerifyRenderingInServerForm(Control control)
{
}
如果GridView有分页时可能会出现如下的提示:
RegisterForEventValidation 只能在 Render(); 期间呼叫。
这个问题可以修改ASPX页面文件的<%Page%>实现,增加两个属性:
EnableEventValidation = "false" AutoEventWireup="true"
本文作者:网友 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow