【发布时间】:2011-06-07 20:14:15
【问题描述】:
可以将 ASCX 或 ASP.net 文件保存为 HTML 文件吗?如果有,怎么做?
【问题讨论】:
-
出于什么目的?...从您的浏览器中,您可以保存输出的 html,但这对您有什么用?
-
您到底想完成什么?您是否在 ASCX 文件中有 HTML 标记,需要将其提取到静态 HTML 页面中?您是否尝试将动态内容的渲染输出保存在 ASCX 文件中?
可以将 ASCX 或 ASP.net 文件保存为 HTML 文件吗?如果有,怎么做?
【问题讨论】:
是的,获取用户控件的呈现内容是可能的,请执行以下操作:
StringWriter output = new StringWriter();
Page pageHolder = new Page();
UserControl viewControl = (UserControl)pageHolder.LoadControl("path to ascx file");
pageHolder.Controls.Add(viewControl);
HttpContext.Current.Server.Execute(pageHolder, output, true);
string htmlOutput = output.ToString();
如果需要,您可以将上述内容调整为 ASPX 页面 :-)
从那里,将其保存到文件应该相当简单。
HTH。 D
【讨论】:
您可以直接使用Page 或UserControl 的Render 方法执行此操作。由于该方法受到保护,您将需要创建一个子类的控件。从那里,您可以做任何您需要的事情。
例如
public partial class MyPage: Page
{
public string GetPageContents()
{
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
using (HtmlTextWriter writer = new HtmlTextWriter(sw))
{
Render(writer);
}
return sb.ToString();
}
}
您可能不想在页面的 PreRenderComplete 事件之前的任何时候调用它,因为否则您无法确定所有子控件/事件/等都已完成。
【讨论】: